Si vous souhaitez enregistrer vos templates n’importe où ailleurs. Vous pouvez simplement créer un nouveau reader. Créez une nouvelle sous classe pour patTemplate_Reader et placer celle-ci dans le répertoire reader.
Vous avez besoin d’implémenter la dernière méthode: readTemplates(). PatTemplate va appeler cette méthode toutes les fois où l’utilisateur appelle patTemplate::readtemplatesFromInput() et passera l’identifiant unique pour la lecture du template. Ce peut être un nom de fichier, une URL ou la valeur d’une clé primaire dans une base de données.
Après la lecture du template, vous allez avoir un tableau en retour qui contient la structure du template. Dans la plupart des cas vous pourrez également employer patTemplate_Reader::parseString(), lequel va appliquer des expressions régulières pour couper la source du template dans différent blocs et interpréter toutes les balises.
01 <?PHP 02 /** 03 * patTemplate Reader qui lit à partir d'un fichier 04 * 05 * @package patTemplate 06 * @subpackage Readers 07 * @author Stephan Schmidt <schst@php.net> 08 */ 09 class patTemplate_Reader_File extends patTemplate_Reader 10 { 11 /** 12 * nom du reader 13 * @access private 14 * @var string 15 */ 16 var $_name ='File'; 17 18 /** 19 * Lecture des templates venant de n'importe quelles sources 20 * 21 * @final 22 * @access public 23 * @param string fichier à analyser 24 * @return array les templates 25 */ 26 function readTemplates( $input ) 27 { 28 $this->_currentInput = $input; 29 $fullPath = $this->_resolveFullPath( $input ); 30 $content = file_get_contents( $fullPath ); 31 32 $templates = $this->parseString( $content ); 33 34 return $templates; 35 } 36 37 /** 38 * résoud le chemin pour n'importe quels templates 39 * 40 * @access private 41 * @param string Le nom de fichier 42 * @return string Le chemin du fichier 43 */ 44 function _resolveFullPath( $filename ) 45 { 46 $baseDir = $this->_options['root']; 47 $fullPath = $baseDir . '/' . $filename; 48 return $fullPath; 49 } 50 }?>
Si vous voulez soutenir la fonctionnalité parse=”off” pour les templates externes, vous devrez créer une seconde méthode appelée loadTemplate(). Cette méthode va recevoir un identifiant unique et devrait renvoyer la donnée associée comme un string. Dans l’exemple ci-dessus, vous découperez simplement l’appel par parseString().
Possible readers
Autres moteurs de template
Les readers peuvent également être utilisés pour lire les templates qui ont été créer pour d’autres moteurs de templates. Nous avons déjà publié un reader, qui peut lire les templates qui ont été créer pour HTML_Template_IT et les traiter comme des templates de patTemplate. Si vous souhaitez implémenter un reader pour un autre moteurs, vous devrez faire vous même une structure similaire à la structure interne du patTemplate. Nous signalerons plus d’informations à ce sujet dans le dernier point.
Le caching ( la mise en tampon mémoire)
PatTemplate supporte le caching pour le retour des structures de templates. Comme le caching est toujours dans un état beta et que l’API du plugin interne peut changer, la documentation à ce sujet suivra, une fois l’API stabilisé. —