Smarty - le moteur et compilateur de template PHP par Monte Ohrt <monte at ohrt
Smarty - le moteur et compilateur de template PHP par Monte Ohrt <monte at ohrt dot com> et Andrei Zmievski <andrei@php.net> Smarty - le moteur et compilateur de template PHP Publié 07-09-2007 Copyright © 2001-2005 New Digital Group, Inc. Table des matières Préface ............................................................................................................................................... vi I. Pour commencer ................................................................................................................................ 1 1. Qu'est-ce que Smarty ? ............................................................................................................... 2 2. Installation ............................................................................................................................... 4 Ce dont vous avez besoin ........................................................................................................ 4 Installation de base ................................................................................................................ 4 Configuration avancée ........................................................................................................... 7 II. Smarty pour les graphistes .................................................................................................................. 9 3. Bases syntaxiques .................................................................................................................... 11 Commentaires .................................................................................................................... 11 Variables ........................................................................................................................... 12 Fonctions ........................................................................................................................... 13 Paramètres ......................................................................................................................... 13 Variables insérées dans des chaînes de caractères ...................................................................... 14 Opérations mathématiques .................................................................................................... 14 Désactiver l'analyse de Smarty ............................................................................................... 15 4. Variables ................................................................................................................................ 16 Variables assignées depuis PHP ............................................................................................. 16 Variables chargées depuis des fichiers de configuration .............................................................. 18 Variable réservée {$smarty} ................................................................................................. 19 5. Modificateurs de variables ......................................................................................................... 22 capitalize ........................................................................................................................... 23 cat .................................................................................................................................... 24 count_characters ................................................................................................................. 24 count_paragraphs ................................................................................................................ 25 count_sentences .................................................................................................................. 26 count_words ...................................................................................................................... 26 date_format ........................................................................................................................ 27 default .............................................................................................................................. 29 escape ............................................................................................................................... 30 indent ............................................................................................................................... 31 lower ................................................................................................................................ 32 nl2br ................................................................................................................................. 33 regex_replace ..................................................................................................................... 33 replace .............................................................................................................................. 34 spacify .............................................................................................................................. 34 string_format ...................................................................................................................... 35 strip .................................................................................................................................. 36 strip_tags ........................................................................................................................... 36 truncate ............................................................................................................................. 37 upper ................................................................................................................................ 38 wordwrap .......................................................................................................................... 38 6. Combiner des modificateurs de variable. ...................................................................................... 41 7. Fonctions natives ..................................................................................................................... 42 {capture} ........................................................................................................................... 42 {config_load} ..................................................................................................................... 43 {foreach},{foreachelse} ....................................................................................................... 45 {if},{elseif},{else} .............................................................................................................. 49 {include} ........................................................................................................................... 51 {include_php} .................................................................................................................... 53 {insert} ............................................................................................................................. 54 {ldelim},{rdelim} ............................................................................................................... 55 {literal} ............................................................................................................................. 56 iii {php} ............................................................................................................................... 57 {section},{sectionelse} ........................................................................................................ 58 {strip} ............................................................................................................................... 67 8. Fonctions utilisateur ................................................................................................................. 69 {assign} ............................................................................................................................ 69 {counter} .......................................................................................................................... 70 {cycle} ............................................................................................................................. 71 {debug} ............................................................................................................................ 72 {eval} ............................................................................................................................... 72 {fetch} .............................................................................................................................. 74 {html_checkboxes} ............................................................................................................. 75 {html_image} ..................................................................................................................... 77 {html_options} ................................................................................................................... 78 {html_radios} ..................................................................................................................... 80 {html_select_date} .............................................................................................................. 82 {html_select_time} .............................................................................................................. 86 {html_table} ...................................................................................................................... 87 {mailto} ............................................................................................................................ 90 {math} .............................................................................................................................. 91 {popup} ............................................................................................................................ 93 {popup_init} ...................................................................................................................... 97 {textformat} ....................................................................................................................... 97 9. Fichiers de configuration ..........................................................................................................101 10. Console de débogage .............................................................................................................102 III. Smarty pour les programmeurs ........................................................................................................103 11. Constantes ...........................................................................................................................105 SMARTY_DIR .................................................................................................................105 SMARTY_CORE_DIR .......................................................................................................105 12. Variables .............................................................................................................................106 $template_dir ....................................................................................................................106 $compile_dir .....................................................................................................................106 $config_dir .......................................................................................................................107 $plugins_dir ......................................................................................................................107 $debugging .......................................................................................................................107 $debug_tpl ........................................................................................................................108 $debugging_ctrl .................................................................................................................108 $autoload_filters ................................................................................................................108 $compile_check .................................................................................................................108 $force_compile ..................................................................................................................108 $caching ...........................................................................................................................109 $cache_dir ........................................................................................................................109 $cache_lifetime .................................................................................................................109 $cache_handler_func ..........................................................................................................110 $cache_modified_check ......................................................................................................110 $config_overwrite ..............................................................................................................110 $config_booleanize ............................................................................................................111 $config_read_hidden ..........................................................................................................111 $config_fix_newlines ..........................................................................................................111 $default_template_handler_func ...........................................................................................111 $php_handling ...................................................................................................................111 $security ..........................................................................................................................111 $secure_dir .......................................................................................................................112 $security_settings ...............................................................................................................112 $trusted_dir .......................................................................................................................112 $left_delimiter ...................................................................................................................112 $right_delimiter .................................................................................................................113 $compiler_class .................................................................................................................113 $request_vars_order ...........................................................................................................113 Smarty - le moteur et compilateur de template PHP iv $request_use_auto_globals ...................................................................................................113 $error_reporting .................................................................................................................113 $compile_id ......................................................................................................................113 $use_sub_dirs ....................................................................................................................114 $default_modifiers .............................................................................................................114 $default_resource_type .......................................................................................................114 13. Méthodes .............................................................................................................................115 14. Cache .................................................................................................................................156 Paramétrer le cache ............................................................................................................156 Caches multiples pour une seule page ....................................................................................158 Groupes de fichiers de cache ................................................................................................159 Contrôler la mise en cache des sorties des Plugins ....................................................................160 15. Fonctionnalités avancées ........................................................................................................162 Objets ..............................................................................................................................162 Filtres de pré-compilation ....................................................................................................163 Filtres de post-compilation ...................................................................................................164 Filtres de sortie ..................................................................................................................164 Fonction de gestion du cache ................................................................................................165 Ressources ........................................................................................................................167 16. Etendre Smarty avec des plugins ..............................................................................................170 Comment fonctionnent les plugins .........................................................................................170 Conventions de nommage ....................................................................................................171 Ecrire des plugins ...............................................................................................................171 Les fonctions de templates ...................................................................................................172 Modificateurs ....................................................................................................................173 Fonctions de blocs ..............................................................................................................174 Fonctions de compilation .....................................................................................................175 filtres de pré-compilation/filtres de post-compilation .................................................................176 Filtres de sortie ..................................................................................................................177 Ressources ........................................................................................................................178 Insertions ..........................................................................................................................179 IV. Appendices ..................................................................................................................................181 17. Diagnostic des erreurs ............................................................................................................182 Erreurs Smarty/PHP ...........................................................................................................182 18. Trucs et astuces ....................................................................................................................184 Gestion des variables non-assignées .......................................................................................184 Gestion des variables par défaut ............................................................................................184 Passage du titre à un template d'en-tête ...................................................................................185 Dates ...............................................................................................................................185 WAP/WML ......................................................................................................................186 Templates composants ........................................................................................................187 Dissimuler les adresses email ...............................................................................................188 19. Ressources ...........................................................................................................................189 20. BUGS .................................................................................................................................190 Smarty - le moteur et compilateur de template PHP v Préface "Comment rendre mes scripts PHP indépendants de la présentation ?". Voici sans doute la question la plus posée sur la mailing list PHP. Alors que PHP est étiqueté "langage de script pour HTML", on se rend vite compte, après quelques projets qui mélangent sans complexe HTML et PHP, que la séparation entre la forme et le contenu, c'est bien [TM]. De plus, dans de nombreuses entreprises les rôles du designer et du programmeur sont distincts. La solution template coule donc de source. Dans notre entreprise par exemple, le développement d'une application se fait de la manière suivante : une fois le cahier des charges écrit, le designer réalise une maquette, et donne ses interfaces au programmeur. Le programmeur implémente les fonctionnalités applicatives et utilise les maquettes pour faire des squelettes de templates. Le projet est alors passé au designer HTML/responsable de la mise en page qui amène les templates jusqu'au faîte de leur gloire. Il est possible que le projet fasse une fois ou deux des allers/retours entre la programmation et la présentation. En conséquence, il est important de disposer d'un bon système de template. Les programmeurs ne veulent pas avoir à faire au HTML, et ne veulent pas non plus que les designers HTML bidouillent le code PHP. Les designers ont besoin d'outils comme des fichiers de configuration, des blocs dynamiques et d'autres solutions pour répondre à des problématiques d'interface, mais ne veulent pas nécessairement avoir à faire à toutes les subtilités de la programmation PHP. Un rapide tour d'horizon des solutions type template aujourd'hui et l'on s'aperçoit que la plupart d'entre elles n'offrent que des moyens rudimentaires pour substituer des variables dans des templates, ainsi que des fonctionnalités limitées de blocs dynamiques. Cependant nous avons besoin d'un peu plus. Nous ne voulons pas que les programmeurs s'occupent de la présentation HTML du TOUT, mais celà est pratiquement inévitable. Par exemple, si un designer veut des couleurs d'arrière plan différentes pour alterner entre différents blocs dynamiques, il est nécessaire que ce dernier travaille avec le programmeur. Nous avons aussi besoin que les designers soient capables de travailler avec leurs propres fichiers de configuration pour y récupérer des variables, exploitables dans leurs templates. Et la liste est longue. Fin 1999, nous avons commencé à écrire une spécification pour un moteur de template. Une fois la spécification terminée, nous avons commencé à travailler sur un moteur de template écrit en C qui pourrait, avec un peu de chance, être inclus à PHP. Non seulement nous avons rencontré des problèmes techniques complexes, mais nous avons participés à de nombreux débats sur ce que devait et ce que ne devait pas faire un moteur de template. De cette expérience nous avons décidé qu'un moteur de template se devait d'être écrit sous la forme d'une classe PHP, afin que quiconque puisse l'utiliser à sa convenance. Nous avons donc réalisé un moteur de template qui se contentait de faire celà, et SmartTemplate™a vu le jour (note : cette classe n'a jamais été soumise au public). C'était une classe qui faisait pratiquement tout ce que nous voulions : substitution de variables, inclusion d'autres templates, intégration avec des fichiers de configuration, intégration de code PHP, instruction 'if' basique et une gestion plus robuste des blocks dynamiques imbriqués. Elle faisait tout celà avec des expressions rationnelles et le code se révéla, comment dire, impénétrable. De plus, elle était relativement lente pour les grosses applications à cause de l'analyse et du travail sur les expressions rationnelles qu'elle devait faire à chaque exécution. Le plus gros problème du point de vue du programmeur était tout le travail nécessaire en amont, dans le script PHP, pour configurer et exécuter les templates, et les blocs dynamiques. Comment rendre tout ceci plus simple ? Puis vint la vision de ce que devait devenir Smarty. Nous savons combien le code PHP peut être rapide sans le coût d'analyse des templates. Nous savons aussi combien fastidieux et décourageant peut paraître le langage pour le designer moyen, et que celà peut être remplacé par une syntaxe spécifique, beaucoup plus simple. Et si nous combinions les deux forces ? Ainsi, Smarty était né...:-) vi Partie I. Pour commencer Table des matières 1. Qu'est-ce que Smarty ? ....................................................................................................................... 2 2. Installation ....................................................................................................................................... 4 Ce dont vous avez besoin ........................................................................................................ 4 Installation de base ................................................................................................................ 4 Configuration avancée ........................................................................................................... 7 1 Chapitre 1. Qu'est-ce que Smarty ? Smarty est un moteur de template pour PHP. Plus précisément, il facilite la séparation entre la logique applicative et la présentation. Celà s'explique plus facilement dans une situation où le programmeur et le designer de templates jouent des rôles différents, ou, comme la plupart du temps, sont deux personnes distinctes. Supposons par exemple que vous concevez une page Web qui affiche un article de newsletter. Le titre, le sous-titre, l'auteur et le corps sont des éléments de contenu, ils ne contiennent aucune information concernant la présentation. Ils sont transmis à Smarty par l'application, puis le designer de templates éditent les templates et utilisent une combinaison de balises HTML et de balises de templates pour formater la présentation de ces éléments (tableaux HTML, couleurs d'arrière-plan, tailles des polices, feuilles de styles, etc.). Un beau jour le programmeur a besoin de changer la façon dont le contenu de l'article est récupéré (un changement dans la logique applicative). Ce changement n'affecte pas le designer de templates, le contenu arrivera toujours au template de la même uploads/Management/ smarty-2-6-14-docs.pdf
Documents similaires










-
28
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Mar 20, 2022
- Catégorie Management
- Langue French
- Taille du fichier 0.7212MB