Table des matières

Utilisez vos propres fonctions

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.

Créer une fonction personnalisée

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.

Exemples de Code

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        ?>
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki