<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>lescinskas.lt</title>
    <description><![CDATA[Žymės įrašai :: smarty]]></description>
    <link>http://www.lescinskas.lt/lt/blog</link>
    <language>lt</language>
    <item>
      <title>Smarty 3 apžvalga</title>
      <description><![CDATA[<p><img width="249" height="74" alt="Smarty" src="http://lescinskas.lt/uploads/editor/image/smarty-logo.png" /></p>
<p>Po beveik 2 metus (2008-12-16 - 2010-11-12) trukusio programavimo, buvo išleista 3 PHP šablonų variklio &bdquo;Smarty&ldquo; versija.</p>
<p>Sistema buvo perrašyta iš pagrindų, pritaikyta PHP 5 versijai, buvo sukurtas naujas sintaksės nagrinėjimo variklis (parser), pagerėjo sistemos darbo našumas, šiek tiek pasikeitė šablonų sintaksė.</p>
<p>Nors egzistuoja kontraversiškos nuomonės, reikalingas PHP kalbos šablonų variklis ar ne, &bdquo;Smarty&ldquo; suteikia papildomas galimybes atskiriant prezentacijos logiką nuo programos logikos. Be to, techniniams dizaineriams, nemokantiems PHP kalbos, dirbti su &bdquo;Smarty&ldquo; gali būti patogiau, saugiau ir produktyviau.</p>
<p>Smarty 3 sintaksė šiek tiek pasikeitė nuo 2 versijos, todėl seni šablonai gali neveikti, ypač jei jie buvo parašyti su klaidomis. 3 versija į sintaksės klaidas žiūri griežčiau, tačiau turi papildomų galimybių.</p>
<p>Kas pasikeitė Smarty 3 versijos šablonų sintaksėje nuo 2 versijos:</p>
<h3>Atsisakyta {ldelim} ir {rdelim}</h3>
<p>2 versijoje norint naudoti { ir } simbolius šablone (pvz.: rašant Javascript funkcijas) juos reikdavo pakeisti {ldelim} ir {rdelim} simboliais arba rašyti tekstą tarp {literal} ir {/literal}. Dabar to daryti nebereikia, tačiau rašant kintamuosius ar funkcijas nebegalima palikti tarpų tarp skirtukų, pvz,: { $foo } ir išves tokį tekstą, o ne kintamojo reikšmę.</p>
<h3>Masyvų modifier'is</h3>
<p>2 versijoje norint modifier'iui perduoti visą masyvą, o ne atskirus jo elementus, reikdavo pridėti @ simbolį, pvz.: {$masyvas|@count}. Dabar visas masyvas perduodamas modifier'iui, pvz.: {$masyvas|count}.</p>
<h3>{php} žymės</h3>
<p>Standartiškai {php} žymės 3 versijoje yra uždraustos. Jas galima įjungti nurodant $smarty-&gt;allow_php_tag = true;</p>
<h3>Kabutės parametruose</h3>
<p>2 versijoje kabutės parametruose buvo nebūtinos, tačiau 3 versijoje jas naudoti būtina, pvz.: {include file=&quot;/kelias/iki/sablono.tpl&quot;}</p>
<p><a href="http://smarty-php.googlecode.com/svn/trunk/distribution/SMARTY2_BC_NOTES">Visi pakeitimai, nesuderinami su &bdquo;Smarty&ldquo; 2 versija</a>.</p>
<p>Taip pat buvo padaryti pakeitimai, palengvinantys darbą su duomenimis:</p>
<h3>Išplėstas {foreach} funkcionalumas</h3>
<p>3 versijoje galima naudoti tokią {foreach} sintaksę:</p>
<p>{foreach $masyvas as $reiksme}</p>
<p>{$reiksme}</p>
<p>{/foreach}</p>
<p>Taip pat palengvintas ciklo savybių gavimas, pvz.:</p>
<p>{$reiskme@key} - masyvo raktas</p>
<p>{$reiksme@iteration} - ciklo iteracija</p>
<p>{$reiksme@total} - visas masyvo elementų kiekis</p>
<p>{$reiksme@first}, {$reiksme@last} - grąžina true, jei elementas pirmas/paskutinis. Patogu naudoti sąlygos sakiniuose</p>
<p>2 &bdquo;Smarty&ldquo; versijoje šios savybės buvo pasiekiamos per {$smarty.foreach.&lt;ciklo vardas&gt;.&lt;savybė&gt;}</p>
<h3>{strip} blokas</h3>
<p>Naudojant {strip} ir {/strip} galima nurodyti, jog visas output'as šiame bloke bus rašomas vienoje eilutėje, pašalinant tarpus, naujas eilutes ir kt. whitespace simbolius.</p>
<p>&bdquo;Smarty&ldquo; 3 versijoje taip pat atsirado šablonų paveldėjimas, funkcijų kūrimas pačiuose šablonuose ir kt. Taip pat šis tas pasikeitė PHP pusėje, pvz.: dabar norint paveldėti Smarty klasę, reikia iškviesti tėvinį konstruktorių - parent::__construct();</p>
<p><a href="http://www.smarty.net/v3_overview">Pilna &bdquo;Smarty&ldquo; 3 versijos apžvalga smarty.net tinklalapyje</a>.</p>]]></description>
      <pubDate>Mon, 15 Nov 2010 14:44:25 +0200</pubDate>
      <link>http://www.lescinskas.lt/lt/blog/entry/paulius/smarty-3-apzvalga</link>
    </item>
  </channel>
</rss>

