L’utilisation de fonction personnalisée est facile comme de manger du gateau. Ils peut être utilsé comme les balises intégrées tmpl, sub, var, etc.
01 <patTemplate:tmpl name="page"> 02 <div> 03 Aujourd'hui on est le : 04 <patTemplate:time format="d/m/Y"/> 05 </div> 06 </patTemplate:tmpl>
Ceci produiras Ajourd’hui on est le:[date courrante], où [le jour courrant] vas être remplacé par la date courrante.
01 <patTemplate:tmpl name="root"> 02 Ceci est un template qui est utilisé pour l'affichage du code. 03 <patTemplate:phpHighlight><?PHP 04 $i = 0; 05 while( $i < 10 ) 06 { 07 echo "C'est la ligne $i.<br />"; 08 $i++; 09 } 10 ?> 11 </patTemplate:phpHighlight> 12 </patTemplate:tmpl>
Dans l’exemple ci-dessus, le code PHP sera encapsulé entre les balises <patTemplate:phpHighlight> qui seront la syntaxe de highlighted dans le rendu.
Les fonctions personnalisées doivent être placées dans patTemplate/Function et être étendues par patTemplate_Function. Vous devez implémenter une méthode qui représente la fonction:
string patTemplate_Function::call( array params, string content )
Le reader vas passer un tableau associatif contenant tout les attributs de votre balise aussi bien qu’un string comme second paramètre, lequel vas contenir tous les caractères des données ( et les balises HTML ) entre les balises d’ouverture et de fermeture. Dans cette méthode vous pourrez calculer le résultat et retourner celà comme un string. Ce résultat vas être inséré dans le template au lieu de votre balise fonction aussi bien que le contenu encapsulé.
Vous pouvez utiliser toutes les fonctions, qui se trouvent dans le répertoire patTemplate/Function, comme patTemplate vas auto-charger les classes.
Les fonctions du template vont être évaluées tandis que le template sera analysé, Il n’y a pas, pour le moment, de façon pour utiliser les variables du template ou tout autres entrées venant du script PHP dans les fonctions. Les fonctions peuvent être imbriquées, patTemplate vas toujours évaluer en premier la fonction la plus haute.
Cet exemple est le code utilsé pour personnaliser la fonction time, ce qui permet l’affichage du temps courrant aussi bien que le reformatage de n’importe quel timestamp que vous lui passerez.
01 <?PHP 02 /** 03 * patTemplate fonction qui calcule le temps courrant 04 * ou n'importe quels autres format de temps spécifier en retour 05 * 06 * @package patTemplate 07 * @subpackage Functions 08 * @author Stephan Schmidt <schst@php.net> 09 */ 10 class patTemplate_Function_Time extends patTemplate_Function 11 { 12 /** 13 * nom de la fonction 14 * @access private 15 * @var string 16 */ 17 var $_name = 'Time'; 18 19 /** 20 * appel la fonction 21 * 22 * @access public 23 * @param array paramètres de la fonction (= attribut de la balise) 24 * @param string contenu de la balise 25 * @return string contenu à insérer dans le template 26 */ 27 function call( $params, $content ) 28 { 29 if( !empty( $content ) ) 30 { 31 $params['time'] = $content; 32 } 33 34 if( isset( $params['time'] ) ) 35 { 36 $params['time'] = strtotime( $params['time'] ); 37 } 38 else 39 { 40 $params['time'] = time(); 41 } 42 43 return date( $params['format'], $params['time'] ); 44 } 45 }?>
Le prochain morceau de code est tout ce que nous avons besoin pour la fonction phpHighlight.
01 <?PHP 02 /** 03 * patTemplate fonction highlights pour le code PHP dans vos templates 04 * 05 * @package patTemplate 06 * @subpackage Functions 07 * @author Stephan Schmidt <schst@php.net> 08 */ 09 class patTemplate_Function_Phphighlight extends patTemplate_Function 10 { 11 /** 12 * nom de la fonction 13 * @access private 14 * @var string 15 */ 16 var $_name = 'Phphighlight'; 17 18 /** 19 * appel de la fonction 20 * 21 * @access public 22 * @param array paramètres de la fonction (= attribut de la balise) 23 * @param string contenu de la balise 24 * @return string contenu à insérer dans le template 25 */ 26 function call( $params, $content ) 27 { 28 ob_start(); 29 highlight_string( $content ); 30 $content = ob_get_contents(); 31 ob_end_clean(); 32 return $content; 33 } 34 } 35 ?>