Smarty
RDV AFUP Paris – 06 octobre 2015
Amaury Bouchard
Diplômé Epita Systèmes & Réseaux + EMBA Epitech
Directeur technique de Fine Media,
éditeur des sites Compr...
Smarty en quelques mots
● Créé par Andrei Zmievski
● Licence libre LGPL
● Syntaxe claire (thank you captain obvious)
● Com...
Fonctionnement
Code PHP Smarty
Templates
Fichiers PHP
générés
Fichiers de
cache
données
HTML
Bases du langage
Syntaxe de base
Écrire un commentaire qui ne sera pas dans le résultat final
{* mon commentaire *}
Afficher une variable
{...
Variable spéciale $smarty
Afficher un paramètre GET/POST
{$smarty.get.name}
{$smarty.post.name}
Afficher un cookie
{$smart...
Filtres de variables
Afficher le contenu d'une variable en minuscule/majuscule
{$url|lower} {$name|upper}
Échapper tous le...
Fonctions PHP comme filtre
Inverser une chaîne de caractères
{$text|strrev}
Afficher un hash MD5
{$var|md5}
Encoder une va...
Syntaxe : conditions
{if $user.age > 99}
…
{elseif $user.age < 3}
…
{else}
…
{/if}
Syntaxe : boucles
<ul>
{foreach from=$users item=user}
<li>{$user.name}</li>
{foreachelse}
<li>Aucun utilisateur</li>
{/fo...
Fonctions Smarty
Assignation de variable
{assign var=v1 value=$age+10}
Boucler parmi plusieurs valeurs
{cycle values='vale...
Utilisation des templates
Inclusion de templates
Inclusion simple
{include file='header.tpl'}
Inclusion avec passage de variables
{include file='hea...
Héritage de templates
Création d'un template de base (page.tpl)
<html>
<head>
<title>{block name="title"}</title>
</head>
...
Étendre Smarty
Création d'un filtre
Création d'un fichier modifier.urlize.php
<?
function smarty_modifier_urlize($str) {
$str = str_repla...
Création d'une fonction
Création d'un fichier function.urlize.php
<?
function smarty_function_urlize($params,
$template) {...
Exemple d'utilisation
Installation avec Composer
Création d'un fichier composer.json
{
"require": {
"smarty/smarty": "3.1.*@dev"
}
}
Téléchargem...
Installation avec apt-get
Installation de la bibliothèque
$ sudo apt-get install smarty3
Chargement de la bibliothèque
<?
...
Exemple de code
Code PHP
<?
// chargement
include_once('Smarty3/Smarty.class.php');
// instanciation
$smarty = new Smarty(...
Exemple de code
Résultat
● Bob
● Sully
● Léon
Utilisation du cache
Exemple de code
Code PHP
<?
// chargement
include_once('Smarty3/Smarty.class.php');
// instanciation
$smarty = new Smarty(...
Merci !
Au fait, on recrute un lead developer
Tu aimes le PHP, MySQL, Redis, Memcache, Selenium, Git,
les code reviews, le...
Prochain SlideShare
Chargement dans…5
×

Smarty

306 vues

Publié le

Présentation par Armaury Bouchard au RDV AFUP Paris le 6 octobre 2015

Publié dans : Internet
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
306
Sur SlideShare
0
Issues des intégrations
0
Intégrations
5
Actions
Partages
0
Téléchargements
1
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Smarty

  1. 1. Smarty RDV AFUP Paris – 06 octobre 2015
  2. 2. Amaury Bouchard Diplômé Epita Systèmes & Réseaux + EMBA Epitech Directeur technique de Fine Media, éditeur des sites ComprendreChoisir.com Blogueur et conférencier amaury.net www.geek-directeur-technique.com @geekcto
  3. 3. Smarty en quelques mots ● Créé par Andrei Zmievski ● Licence libre LGPL ● Syntaxe claire (thank you captain obvious) ● Communauté active (évolution, documentation) ● Intégration aisée à tout projet ● Extensible facilement ● Système de cache intégré
  4. 4. Fonctionnement Code PHP Smarty Templates Fichiers PHP générés Fichiers de cache données HTML
  5. 5. Bases du langage
  6. 6. Syntaxe de base Écrire un commentaire qui ne sera pas dans le résultat final {* mon commentaire *} Afficher une variable {$myName} Afficher un élément d'un tableau {$identifiers[0]} Afficher un élément de tableau associatif {$user.name} Expression mathématique {$age+10}
  7. 7. Variable spéciale $smarty Afficher un paramètre GET/POST {$smarty.get.name} {$smarty.post.name} Afficher un cookie {$smarty.cookies.name} Accéder à une variable de session PHP {$smarty.session.id} Utiliser la superglobale $_SERVER {$smarty.server.HTTP_REFERER} Afficher le timestamp courant {$smarty.now}
  8. 8. Filtres de variables Afficher le contenu d'une variable en minuscule/majuscule {$url|lower} {$name|upper} Échapper tous les caractères spéciaux HTML d'une variable {$htmlContent|escape} Utiliser une valeur par défaut si la variable est vide {$name|default:'Utilisateur inconnu'} Afficher la date courante après formatage {$smarty.now|date_format:'d/m/Y'} Substituer du texte {$text|replace:'PHP5':'PHP7'}
  9. 9. Fonctions PHP comme filtre Inverser une chaîne de caractères {$text|strrev} Afficher un hash MD5 {$var|md5} Encoder une variable au format JSON {$data|json_encode} Afficher le nombre de caractères identiques {$str1|similar_text:$str2}
  10. 10. Syntaxe : conditions {if $user.age > 99} … {elseif $user.age < 3} … {else} … {/if}
  11. 11. Syntaxe : boucles <ul> {foreach from=$users item=user} <li>{$user.name}</li> {foreachelse} <li>Aucun utilisateur</li> {/foreach} </ul>
  12. 12. Fonctions Smarty Assignation de variable {assign var=v1 value=$age+10} Boucler parmi plusieurs valeurs {cycle values='valeur1,valeur2'} Effectuer un calcul mathématique {math equation='x + y' x=$age y=3} Ouvrir une popup avec toutes les variables {debug}
  13. 13. Utilisation des templates
  14. 14. Inclusion de templates Inclusion simple {include file='header.tpl'} Inclusion avec passage de variables {include file='header.tpl' title=$article.title}
  15. 15. Héritage de templates Création d'un template de base (page.tpl) <html> <head> <title>{block name="title"}</title> </head> <body> {block name="body"} </body> </html> Création d'un « vrai » template qui va l'étendre {extends file="page.tpl"} {block name="title"} {$title|default:'Titre de page'} {/block} {block name="body"} Corps de page {/block}
  16. 16. Étendre Smarty
  17. 17. Création d'un filtre Création d'un fichier modifier.urlize.php <? function smarty_modifier_urlize($str) { $str = str_replace($str, ' ', '-'); $url = urlencode($str); return ($url); } Utilisation du filtre dans un template <a href="/content/{$content.title|urlize}">
  18. 18. Création d'une fonction Création d'un fichier function.urlize.php <? function smarty_function_urlize($params, $template) { $str = $params['url']; $str = str_replace($str, ' ', '-'); $url = urlencode($str); return ($url); } Utilisation du filtre dans un template <a href="/content/{urlize url=$content.title}">
  19. 19. Exemple d'utilisation
  20. 20. Installation avec Composer Création d'un fichier composer.json { "require": { "smarty/smarty": "3.1.*@dev" } } Téléchargement des fichiers $ php composer.phar install Chargement par l'autoloader <? include_once('vendor/autoload.php');
  21. 21. Installation avec apt-get Installation de la bibliothèque $ sudo apt-get install smarty3 Chargement de la bibliothèque <? include_once('Smarty3/Smarty.class.php');
  22. 22. Exemple de code Code PHP <? // chargement include_once('Smarty3/Smarty.class.php'); // instanciation $smarty = new Smarty(); // définition de variable $users = array('Bob', 'Sully', 'Léon'); $smarty->assign('users', $users); // interprétation du template et // affichage du résultat $smarty->display('template.tpl');
  23. 23. Exemple de code Résultat ● Bob ● Sully ● Léon
  24. 24. Utilisation du cache
  25. 25. Exemple de code Code PHP <? // chargement include_once('Smarty3/Smarty.class.php'); // instanciation $smarty = new Smarty(); // configuration du cache $smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT); if (!$smarty->is_cached('template.tpl')) { // définition de variable $users = array('Bob', 'Sully', 'Léon'); $smarty->assign('users', $users); } // interprétation du template et affichage du résultat $smarty->display('template.tpl');
  26. 26. Merci ! Au fait, on recrute un lead developer Tu aimes le PHP, MySQL, Redis, Memcache, Selenium, Git, les code reviews, les sites à fort trafic, avoir l'impression de travailler pour quelque chose d'utile en plus de rejoindre une équipe sympa et motivée ? => amaury@amaury.net

×