IPRO - PC Magazine Romania, Decembrie 2003
SOLUȚII PENTRU PROGRAMATORII ȘI DESIGNERII WEB
Smarty - procesor/compilator PHP de Șabloane
Elena Rogojină, Andrei
Băutu
Smarty este un procesor de șabloane pentru PHP care oferă un grad ridicat de
separare a prezentării de logica unei aplicații web.
Acest lucru e important în proiecte de dimensiuni medii și mari, în care sunt
implicate mai multe persoane. Smarty este pe lângă un procesor de șabloane,
un compilator, și o unealtă de cooperare între designeri web și programatorii
PHP. Folosind Smarty, designerii produc fișiere șablon (template), formate din
text static (ex. taguri HTML, CSS) și expresii Smarty.
Smarty pentru designeri
Un șablon Smarty este asemănător cu un fișier HTML static. În general, fișierele
șablon conțin în denumire secvența ".tpl" sunt salvate în același
director. La prima invocare a unui șablon, Smarty convertește fișierul șablon
în script PHP, procedeu numit compilare de șabloane. La invocări succesive,
scriptul PHP rezultat este doar inclus.
În interiorul unui șablon Smarty se pot observa unele particularități și anume
prezența expresiilor Smarty. Sa luăm exemplul următor:
<!-- index.tpl.html -->
{include file="antet.tpl.html"}
<body>
<h1>Bine ai venit, {$nume}</h1>
</body>
{include file="subsol.tpl.html"}
Expresiile conținute între delimitatorii {și} sunt expresii Smarty. Variabilele
care provin din codul PHP și care trebuie folosite de designeri se identifică
prin expresii de tipul {$nume_variabilă}. Astfel, în porțiunea de cod de mai
sus, se afișează variabila $nume. Expresia {include file=" <nume_fisier>"}
permite imbricarea fișierelor șablon în vederea reutilizării acestora.
Smarty permite folosirea instrucțiunilor de control al fluxului (if, section,
foreach) cu următoarele sintaxe (simplificate):
{if <conditie> } cod html
{elseif <conditie> }
cod html {else}
cod html {/if}
{section loop=$tablou name="index"}
cod html {sectionelse}
cod html {/section}
{foreach from=$tablou item="element"}
cod html {foreachelse} cod html {/foreach}
Presupunem că $studenti este un tablou cu numele și notele unor studenți la
un examen. Pentru afișarea acestuia putem folosi următorul șablon:
<!-- rezultate.tpl.html -->
{foreach item="student" from=$studenti}
<li
{if $student.nota lt 5}
style="color: green" {else} style="color: red" {/if}
>{$student.nume} {$student.nota}
</li>
{foreachelse} Nu exista nici un student.
{/foreach}
Smarty pentru programatori
Avantajul principal pe care îl oferă Smarty programatorilor PHP este separarea
funcționalității aplicației de interfața cu utilizatorul, adică a codului PHP
de tagurile HTML. Astfel acestea pot evolua independent una față de cealaltă.
Pentru a folosi Smarty codul PHP trebuie să respecte anumite condiții. Mai întâi
trebuie inclus fișierul "Smarty.class.php" și apoi instanțiat un obiect
Smarty. Asignarea unei variabile (care va fi folosită de șablon) se face apelând
metoda assign cu o pereche nume-valoare sau cu un tablou. În final, pentru a
procesa și afișa șablonul se apelează metoda display. Șablonul index.tpl.html
poate fi afișat folosind următorul script:
<?php
require "Smarty.class.php";
$smarty = new Smarty;
// instantiem un obiect
$smarty->assign("nume", "Popescu");
// asignam nume="Popescu"
$smarty->display("index.tpl.html");
// afisam rezultatul
?>
Șablonul rezultate.tpl.html poate fi afișat folosind următorul script:
<?php
require "Smarty.class.php";
$ rezultate_examen = array(
array("nume"=>"Matel Emilia", "nota"=>4),
array("nume"=>"Popa Ioana Maria", "nota"=>10),
array("nume"=>"Boni Danut Stefan", "nota"=>10));
$smarty = new Smarty;
$smarty->assign("studenti", $rezultate_examen);
$smarty->display("rezultate.tpl.html");
?>
Mai multe informații referitoare la Smarty pot fi găsite la următoarele adrese:
smarty.php.net
smarty.incutio.com
webmasterbase.com/article/812
www.phpinsider.com/benchmarks_phemplate
|