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
|