Temphplate
[ class tree: Temphplate ] [ index: Temphplate ] [ all elements ]

Class: BasicTemphplate

Source Location: /class.temphplate.php

Class Overview


Classe de base. Elle définit le squelette principale de Temphplate.


Author(s):

Version:

  • 1.1

Variables

Methods


Child classes:

Temphplate
Extension officielle de BasicTemphplate implémentant les commandes et les structures conditionnelles. Il s'agit de la classe principale du moteur Temphplate.

Class Details

[line 60]
Classe de base. Elle définit le squelette principale de Temphplate.

Sont gérés: les variables, les blocs, et toutes les opérations permettant d'étendre le moteur. Temphplate n'est qu'une extension de cette base.




Tags:

deprecated:  N'utilisez cette classe que si vous voulez limiter les fonctionnalités de vos modèles (légère amélioration de performance, mais seule la base - les blocs et les variables - est accessible). Préférez l'utilisation de Temphplate
version:  1.1
see:  Temphplate
author:  Nicolas Chambrier <naholyr@yahoo.fr>


[ Top ]


Class Variables

$call_after = array()

[line 116]

Pour chaque élément $method de ce tableau, on appellera la méthode de l'objet portant ce nom sur le résultat du modèle APRES analyse.

Cette opération est faite APRES les traitements imposés par replace_after.



Type:   array


[ Top ]

$call_before = array()

[line 99]

Pour chaque élément $method de ce tableau, on appellera la méthode de l'objet portant ce nom sur le contenu du modèle, AVANT d'analyser le modèle.

Cette opération est faite APRES les traitements imposés par replace_before. Une utilisation de cette propriété est illustrée par l'implémentation des structures elseif et else dans Temphplate (n'hésitez pas à potasser le code source).



Type:   array


[ Top ]

$delete_unset_vars =  TRUE

[line 129]

Indique si l'on doit supprimer toutes les variables non affectées du modèle après analyse.


Type:   boolean


[ Top ]

$filename =  NULL

[line 145]

Nom du dernier fichier analysé.


Type:   string


[ Top ]

$html_result =  NULL

[line 153]

Résultat de l'analyse d'un modèle.



Tags:


Type:   string


[ Top ]

$include_dir =  ''

[line 122]

Liste des dossiers dans lesquels rechercher les modèles. Séparés par un point-virgule.


Type:   string


[ Top ]

$last_error =  TPHPL_ERR_NO_ERROR

[line 68]

Code de la dernière erreur levée (>0 s'il y a eu une erreur).


Type:   int


[ Top ]

$last_error_msg =  NULL

[line 74]

Message de la dernière erreur levée.


Type:   string


[ Top ]

$replace_after = array()

[line 108]

Pour chaque élément [clé]=>valeur de ce tableau, on remplace toutes les occurences de "clé" par "valeur" APRES l'analyse.

Cette opération est faite AVANT les traitements imposés par call_after.




Tags:


Type:   array


[ Top ]

$replace_before = array()

[line 89]

Pour chaque élément [clé]=>valeur de ce tableau, on remplace toutes les occurences de "clé" par "valeur" AVANT l'analyse.

Cette opération est faite AVANT les traitements imposés par call_before.



Type:   array


[ Top ]

$syntax = array()

[line 139]

Détermine la syntaxe des instructions internes de Temphplate. Vous pouvez personnaliser la syntaxe de vos modèles grâce à cette instruction.

Exemple:

  1. $tpl->syntax['endblock']='/block';
et vous devrez fermer les blocs des modèles analysés par $tpl avec {/block} au lieu de {end:block}.



Type:   mixed


[ Top ]

$var_tphpl_num =  'tphpl_num'

[line 161]

Nom de la variable automatique indiquant le numéro d'occurence d'un bloc.



Tags:


Type:   string


[ Top ]



Class Methods


constructor BasicTemphplate [line 216]

BasicTemphplate BasicTemphplate( [string $include_dir = ''])

Constructeur.



Parameters:

string   $include_dir   Une liste de répertoires séparés par un point-virgule. Tous les fichiers que Temphplate devra traiter, il les cherchera dans '.', puis dans ces répertoires, l'un après l'autre.

[ Top ]

method addStructure [line 261]

boolean addStructure( string $structure_name, [string $open_tag = FALSE], [string $end_tag = FALSE])

Ajoute une structure de bloc personnalisée.



Parameters:

string   $structure_name   Nom de la structure (vous devrez définir une méthode parseStructureNomDeLaStructure).
string   $open_tag   Tag de l'instruction ouvrant un bloc (instruction complète: {OpenTag:Paramètre}.
string   $end_tag   Tag de l'instruction fermant un bloc (instruction complète: {CloseTag}).

[ Top ]

method deleteLast [line 411]

boolean deleteLast( string $block)

Supprime la dernière occurence du bloc.

  1. Modèle: ...{block:monbloc}-{mavar}{end:block}...
  2. $tpl->set('monbloc/mavar', '1');
  3. $tpl->set('monbloc/mavar', '2');
  4. Résultat: ...-1-2...
  5. $tpl->deleteLast('monbloc');
  6. Résultat: ...-1...




Parameters:

string   $block   le chemin vers le bloc à supprimer

[ Top ]

method encodeAccents [line 545]

void encodeAccents( [boolean $do = TRUE])

Le code HTML généré verra tous ses caractères spéciaux encodés selon leur équivalent en entité HTML.

Les caractères suivants sont ignorés:

  1. '<'
  2. '>'
  3. '"'
  4. '&'
Par défaut, cet encodage est activé.
  1. Modèle: Je m&eacute;lange encodé et non <b>encodé</b>
  2. Résultat: Je m&eacute;lange encod&eacute; et non <b>encod&eacute;</b>
  1. Modèle: Modèle: Je m&eacute;lange encodé et non <b>encodé</b>
  2. $tpl->encodeAccents(FALSE);
  3. Résultat: Je m&eacute;lange encodé et non <b>encodé</b>
Il s'agit en fait simplement de l'ajout ou du retrait de certaines règles de transformation APRES analyse.
  1. $table = get_html_translation_table(HTML_ENTITIES);
  2. unset($table['<']);
  3. unset($table['>']);
  4. unset($table['"']);
  5. unset($table['&']);
  6. if ($do) {
  7. foreach ($table as $char => $code)
  8. $this->replace_after[$char] = $code;
  9. }
  10. else {
  11. foreach ($table as $char => $code)
  12. unset($this->replace_after[$char]);
  13. }
Note: si vous voulez transformer également certains autres caractères spéciaux, ajoutez-les à la table de transformations:
  1. $tpl->replace_after['>'] = '&gt;';
  2. $tpl->replace_after['<'] = '&lt;';
  3. $tpl->replace_after['&'] = '&amp;';
  4. $tpl->replace_after['"'] = '&quot;';




Tags:



Parameters:

boolean   $do   activer (TRUE) ou désactiver (FALSE) l'encodage.

[ Top ]

method error [line 912]

void error( int $type)

Lève l'erreur correspondant au code d'erreur donné.

Cette fonction peut prendre des paramètres supplémentaires qui seront alors utilisé pour complété le message d'erreur.

  1. $tpl->setError(1000, 'Millième message, %1.');
  2. $tpl->error(1000, 'grumpf');
  3. Résultat: Warning: Millième message, grumpf. in XXX on line YYY.
Note: après une levée d'erreur, les propriétés $last_error et $last_error_msg sont définies.




Tags:



Parameters:

int   $type   un code d'erreur (une des constantes TPHPL_ERR_*).

[ Top ]

method errorMessage [line 932]

string errorMessage( int $type)

Les message correspondant au code d'erreur donné.

Cette fonction peut prendre des paramètres supplémentaires qui seront alors utilisé pour complété le message d'erreur.

  1. $tpl->setError(1000, 'Millième message, %1.');
  2. echo $tpl->errorMessage(1000, 'grumpf');
  3. Résultat: Millième message, grumpf.




Tags:

return:  le message d'erreur complété
see:  BasicTemphplate::setError()


Parameters:

int   $type   un code d'erreur (une des constantes TPHPL_ERR_*).

[ Top ]

method fetch [line 579]

string fetch( )

Renvoie le résultat de l'analyse du modèle.

  1. Modèle mavar.htm: ...{mavar}...
  2. Code complet:
  3. $tpl =& new BasicTemphplate;
  4. $tpl->set('mavar', 'coucou');
  5. $tpl->parse('mavar.htm');
  6. $str = $tpl->fetch();
  7. Contenu de $str: ...coucou...
Si aucun modèle n'a été analysé, renvoie une chaîne vide. Note: après un appel à fetch(), la propriété $html_result est le code HTML obtenu avant les transformations imposées par la propriété $replace_after.




Tags:



Overridden in child classes as:

Temphplate::fetch()
Renvoie le résultat de l'analyse du modèle.

[ Top ]

method findFile [line 884]

mixed findFile( string $filename)

Cherche un fichier dans le répertoire courant, puis dans les répertoires défini par la propriété $include_dir.



Tags:

return:  le nom complet du fichire, ou FALSE en cas d'échec.
see:  BasicTemphplate::$include_dir


Parameters:

string   $filename   le nom du fichier

[ Top ]

method htmlTransform [line 613]

string htmlTransform( string $html)

Transforme les délimiteurs (par défaut '{' et '}') en leur équivalent HTML: &#(code ascii);.



Parameters:

string   $html   texte à transformer

[ Top ]

method output [line 602]

void output( )

Affiche le résultat de l'analyse du modèle.

  1. echo $this->fetch();




Tags:



[ Top ]

method parse [line 711]

void parse( string $str, [string $type = 'file'])

Analyse un modèle directement ou un fichier.



Parameters:

string   $str   le contenu du modèle, ou bien le nom du fichier
string   $type   le type: 'file' si c'est un fichier, 'str' si c'est une chaîne de caractères directe.

[ Top ]

method parseFile [line 690]

boolean parseFile( string $filename)

Analyse le modèle contenu dans un fichier. Ce fichier sera recherché dans le répertoire courant, puis dans tous les répertoires spécifiés dans la propriété $include_dir.

  1. Mon modèle tpl/modele.htm: .[{mavar}].
  2. $tpl->include_dir .= ';tpl'; // on ajoute le rép. 'tpl' à $include_dir
  3. $tpl->parseFile('modele.htm'); // le fichier est dans un des rép. d'$include_dir
  4. $tpl->set('mavar', '-');
  5. $tpl->output();
  6. Affiche: .[-].




Tags:



Parameters:

string   $filename   le nom de fichier.

[ Top ]

method parseString [line 630]

boolean parseString( string $str)

Analyse le modèle.

  1. $tpl->set('ici', 'là.');
  2. $tpl->parseString('Mon modèle est {ici}');
  3. $tpl->output();
  4. Affiche: Mon modèle est là.
Après l'appel à cette




Parameters:

string   $str   le modèle.

[ Top ]

method parseStructureBlock [line 784]

boolean parseStructureBlock( array $tree, array $assigns, string $path)

Méthode d'analyse permettant d'implémenter la structure de bloc.

  1. $name = $tree['param'];
  2. if (isset($assigns['.'.$name])) {
  3. $i = 0;
  4. foreach ($assigns['.'.$name] as $assign) {
  5. $new_path = $path=='' ? $name : $path.'/'.$name;
  6. $assign[$this->var_tphpl_num] = ++$i;
  7. if (!$this->parseTree($tree['contents'],$assign,$new_path))
  8. return FALSE;
  9. }
  10. }
  11. return TRUE;




Parameters:

array   $tree   arbre syntaxique
array   $assigns   liste des assignements pour cette partie du modèle
string   $path   le chemin qui a mené ici (type "bloc1/bloc2")

[ Top ]

method parseTree [line 758]

boolean parseTree( array $tree, array $assigns, [string $path = ''])

Analyse un modèle sous sa forme d'arbre syntaxique. Cette méthode est généralement appelée par la méthode parseStructureMaStructure d'une classe mère définissant une nouvelle structure de bloc "MaStructure".



Parameters:

array   $tree   arbre syntaxique
array   $assigns   liste des assignements pour cette partie du modèle
string   $path   le chemin qui a mené ici (type "bloc1/bloc2")

[ Top ]

method repeatBlock [line 488]

boolean repeatBlock( string $block, [int $n = 1])

Répète un bloc sans assignations.

  1. Modèle: {block:point}.{end:block}
  2. $tpl->repeatBlock('point', 5);
  3. Résultat: .....
Notez qu'il y a tout de même une affectation implicite de la variable 'tphpl_num', qui est le numéro d'occurence du bloc.
  1. Modèle: {block:a}.{tphpl_num}{end:block}.
  2. $tpl->repeatBlock('a', 5);
  3. Résultat: .1.2.3.4.5.




Parameters:

string   $block   le nom du bloc
int   $n   le nombre de répétitions

[ Top ]

method set [line 372]

boolean set( string $var, mixed $val, [boolean $new_block = FALSE])

Effectuer une assignations.

  1. Modèle: ...{mavar}-{block:monbloc}...{mavar}...{end:block}-
  2. $tpl->set('mavar', 'mavaleur');
  3. $tpl->set('monbloc/mavar', 'occurence_1');
  4. $tpl->set('monbloc/mavar', 'occurence_2');
  5. Résultat: ...mavaleur-...occurence_1......occurence_2...-




Parameters:

string   $var   la variable à assigner. Cela peut être un nom de variable ("var", ou "blk1/blk2/var" si elle se trouve imbriqués dans des blocs), ou un nom de bloc ("blk1", ou "blk1/blk2" s'il se trouve imbriqué dans d'autres blocs). Si vous voulez affecter un bloc, vous devrez lui affecter un ensemble d'assignations. Il s'agit d'une liste d'assignations, une assignations étant un tableau [$var]=>$val. Note: On affecte l'assignation à la dernière occurence du bloc. Si la variable est déjà affectée, alors on crée une nouvelle occurence du bloc.
mixed   $val   la valeur à assigner. s'il s'agit d'un tableau c'est un bloc qui sera assigné.
boolean   $new_block   Si ce paramètre est mis à TRUE, et que $var est un bloc ou un chemin vers une variable imbriqué, on force la création d'une nouvelle occurence de ce bloc sans assignations. Les prochains appels à set concernant le même bloc affecteront cette occurence.

[ Top ]

method setBlock [line 459]

boolean setBlock( string $block, array $assigns, [boolean $new_block = FALSE])

Effectue une assignation groupée dans un bloc.

  1. Modèle: ...{block:a}-{x}.{y}{end:block}-...
  2. $tpl->setBlock('a', array(array('x'=>'a','y'=>'A')));
  3. $tpl->setBlock('a', array(array('x'=>'b','y'=>'B')));
  4. Résultat: ...-a.A-b.B-...
  5. $tpl->setBlock('a', array(array('x'=>'c','y'=>'C')), TRUE);
  6. Résultat: ...-a.A-b.B-c.C-.-...
Le "-." en trop après "-c.C" correspond à l'occurence vide qu'on a forcée avec le 3e paramètre à TRUE.




Tags:



Parameters:

string   $block   le nom du bloc
array   $assigns   une liste d'assignations. Une assignation est un tableau de la forme [$var] => $val.
boolean   $new_block   Si ce paramètre est mis à TRUE, on force la création d'une nouvelle occurence de ce bloc sans assignations.

[ Top ]

method setDelimiters [line 286]

boolean setDelimiters( char $open, char $close)

Modifie les délimiteurs ouvrant et fermant une instruction.

Exemple:

  1. $tpl->setDelimiters('<','>');
et vous devrez écrire vos instructions dans les modèles analysés par $tpl sous la forme <Instruction> au lieu de {Instruction}.




Parameters:

char   $open   Délimiteur ouvrant.
char   $close   Délimiteur fermant.

[ Top ]

method setError [line 246]

void setError( int $type, string $message, [int $level = E_USER_WARNING])

Définit un code d'erreur utilisable.



Tags:



Parameters:

int   $type   le code d'erreur
string   $message   le message d'erreur. Vous pouvez placer des "%i" dans ce texte. %1 sera remplacé par le 1er argument supplémentaire passé à error() lors de la levée de l'erreur, %2 le second, etc...
int   $level   le niveau de l'erreur, une valeur parmi E_USER_NOTICE, E_USER_WARNING et E_USER_ERROR

[ Top ]

method setVars [line 433]

boolean setVars( array $assign)

Effectue une assignation en série. On fera simplement une suite d'appels à set.

  1. Modèle: ...{v1} {v2} {v3}...
  2. $tpl->setVars(array('v1'=>'a','v2'=>'b','v3'=>'c'));
  3. Résultat: ...a b c...
Notez qu'il n'y a a priori pas de contre-indication à utiliser cette méthode pour assigner une liste d'éléments d'un tableau.
  1. Modèle: ...{0} {1} {2}...
  2. $tpl->setVars(array('a','b','c'));
  3. Résultat: ...a b c...




Tags:



Parameters:

array   $assign   une assignation. Il s'agit d'un tableau [$var] => $val.

[ Top ]

method version [line 309]

string version( )



Tags:

return:  Version actuelle de la classe


Overridden in child classes as:

Temphplate::version()

[ Top ]


Documentation generated on Wed, 29 Sep 2004 11:40:00 +0200 by phpDocumentor 1.3.0RC3