SlideShare une entreprise Scribd logo
1  sur  26
Télécharger pour lire hors ligne
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 ComprendreChoisir.com
Blogueur et conférencier
amaury.net
www.geek-directeur-technique.com
@geekcto
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é
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
{$myName}
Afficher un élément d'un tableau
{$identifiers[0]}
Afficher un élément de tableau associatif
{$user.name}
Expression mathématique
{$age+10}
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}
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'}
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}
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>
{/foreach}
</ul>
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}
Utilisation des templates
Inclusion de templates
Inclusion simple
{include file='header.tpl'}
Inclusion avec passage de variables
{include file='header.tpl'
title=$article.title}
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}
Étendre Smarty
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}">
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}">
Exemple d'utilisation
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');
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');
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');
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();
// 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');
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

Contenu connexe

Tendances (13)

Mpdf 10
Mpdf 10Mpdf 10
Mpdf 10
 
Mpdf 6
Mpdf 6Mpdf 6
Mpdf 6
 
Mpdf 4
Mpdf 4Mpdf 4
Mpdf 4
 
Mpdf 8
Mpdf 8Mpdf 8
Mpdf 8
 
Présentation jQuery pour débutant
Présentation jQuery pour débutantPrésentation jQuery pour débutant
Présentation jQuery pour débutant
 
Les bases du CSS3
Les bases du CSS3Les bases du CSS3
Les bases du CSS3
 
Outils front-end
Outils front-endOutils front-end
Outils front-end
 
Les base du Html5
Les base du Html5Les base du Html5
Les base du Html5
 
Mpdf 7
Mpdf 7Mpdf 7
Mpdf 7
 
Mpdf 3
Mpdf 3Mpdf 3
Mpdf 3
 
Cours php & Mysql - 4éme partie
Cours php & Mysql - 4éme partieCours php & Mysql - 4éme partie
Cours php & Mysql - 4éme partie
 
Html5 2
Html5 2Html5 2
Html5 2
 
Apprenez le jQuery
Apprenez le jQueryApprenez le jQuery
Apprenez le jQuery
 

Similaire à Smarty

Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantHugo Hamon
 
Introduction aux Web components (DNG Consulting)
Introduction aux Web components (DNG Consulting)Introduction aux Web components (DNG Consulting)
Introduction aux Web components (DNG Consulting)DNG Consulting
 
HTML 5 - intro - en francais
HTML 5 - intro - en francaisHTML 5 - intro - en francais
HTML 5 - intro - en francaisVlad Posea
 
1-Introduction JQuery.pptx
1-Introduction JQuery.pptx1-Introduction JQuery.pptx
1-Introduction JQuery.pptxlaabid1
 
Normes de base du Web GTI780 & MTI780 ETS A09
Normes de base du Web  GTI780 & MTI780  ETS   A09Normes de base du Web  GTI780 & MTI780  ETS   A09
Normes de base du Web GTI780 & MTI780 ETS A09Claude Coulombe
 
HTML5 & CSS3
HTML5 & CSS3HTML5 & CSS3
HTML5 & CSS3JDerrien
 
Formation developpement web KADODJOMON EMMANUEL COULIBALY.pptx
Formation developpement web KADODJOMON EMMANUEL COULIBALY.pptxFormation developpement web KADODJOMON EMMANUEL COULIBALY.pptx
Formation developpement web KADODJOMON EMMANUEL COULIBALY.pptxtanokouakouludovic
 
Pratique de javascript KOUAMI DJOMO
Pratique de javascript KOUAMI DJOMOPratique de javascript KOUAMI DJOMO
Pratique de javascript KOUAMI DJOMOJulio Djomo
 
Bowia formation-business-object-webintelligence-les-bases-et-perfectionnement
Bowia formation-business-object-webintelligence-les-bases-et-perfectionnementBowia formation-business-object-webintelligence-les-bases-et-perfectionnement
Bowia formation-business-object-webintelligence-les-bases-et-perfectionnementCERTyou Formation
 
script site e-commerce -php
script site e-commerce -php script site e-commerce -php
script site e-commerce -php Yassine Badri
 
Atelier WordPress: Création d&rsquo;extension WordPress
Atelier WordPress: Création d&rsquo;extension WordPressAtelier WordPress: Création d&rsquo;extension WordPress
Atelier WordPress: Création d&rsquo;extension WordPressIZZA Samir
 
La puissance des pseudo-éléments
La puissance des pseudo-élémentsLa puissance des pseudo-éléments
La puissance des pseudo-élémentsGeoffrey Croftє
 

Similaire à Smarty (20)

Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 Performant
 
Introduction aux Web components (DNG Consulting)
Introduction aux Web components (DNG Consulting)Introduction aux Web components (DNG Consulting)
Introduction aux Web components (DNG Consulting)
 
Cours html5
Cours html5Cours html5
Cours html5
 
HTML 5 - intro - en francais
HTML 5 - intro - en francaisHTML 5 - intro - en francais
HTML 5 - intro - en francais
 
1-Introduction JQuery.pptx
1-Introduction JQuery.pptx1-Introduction JQuery.pptx
1-Introduction JQuery.pptx
 
Cours HTML/CSS
Cours HTML/CSSCours HTML/CSS
Cours HTML/CSS
 
HTML5
HTML5HTML5
HTML5
 
Normes de base du Web GTI780 & MTI780 ETS A09
Normes de base du Web  GTI780 & MTI780  ETS   A09Normes de base du Web  GTI780 & MTI780  ETS   A09
Normes de base du Web GTI780 & MTI780 ETS A09
 
HTML5 & CSS3
HTML5 & CSS3HTML5 & CSS3
HTML5 & CSS3
 
Formation developpement web KADODJOMON EMMANUEL COULIBALY.pptx
Formation developpement web KADODJOMON EMMANUEL COULIBALY.pptxFormation developpement web KADODJOMON EMMANUEL COULIBALY.pptx
Formation developpement web KADODJOMON EMMANUEL COULIBALY.pptx
 
Pratique de javascript KOUAMI DJOMO
Pratique de javascript KOUAMI DJOMOPratique de javascript KOUAMI DJOMO
Pratique de javascript KOUAMI DJOMO
 
Bowia formation-business-object-webintelligence-les-bases-et-perfectionnement
Bowia formation-business-object-webintelligence-les-bases-et-perfectionnementBowia formation-business-object-webintelligence-les-bases-et-perfectionnement
Bowia formation-business-object-webintelligence-les-bases-et-perfectionnement
 
script site e-commerce -php
script site e-commerce -php script site e-commerce -php
script site e-commerce -php
 
Atelier template
Atelier templateAtelier template
Atelier template
 
Introduction à HTML 5
Introduction à HTML 5Introduction à HTML 5
Introduction à HTML 5
 
Atelier WordPress: Création d&rsquo;extension WordPress
Atelier WordPress: Création d&rsquo;extension WordPressAtelier WordPress: Création d&rsquo;extension WordPress
Atelier WordPress: Création d&rsquo;extension WordPress
 
La puissance des pseudo-éléments
La puissance des pseudo-élémentsLa puissance des pseudo-éléments
La puissance des pseudo-éléments
 
Tapestry
TapestryTapestry
Tapestry
 
cours Php
cours Phpcours Php
cours Php
 
HTML
HTMLHTML
HTML
 

Smarty

  • 1. Smarty RDV AFUP Paris – 06 octobre 2015
  • 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. 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. Fonctionnement Code PHP Smarty Templates Fichiers PHP générés Fichiers de cache données HTML
  • 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. 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. 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. 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. Syntaxe : conditions {if $user.age > 99} … {elseif $user.age < 3} … {else} … {/if}
  • 11. Syntaxe : boucles <ul> {foreach from=$users item=user} <li>{$user.name}</li> {foreachelse} <li>Aucun utilisateur</li> {/foreach} </ul>
  • 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}
  • 14. Inclusion de templates Inclusion simple {include file='header.tpl'} Inclusion avec passage de variables {include file='header.tpl' title=$article.title}
  • 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}
  • 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. 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}">
  • 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. 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. 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. Exemple de code Résultat ● Bob ● Sully ● Léon
  • 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. 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