Lecture depuis une base de données

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é. —

Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki