<h2>P.E.T. - jednoduch² Üablonovacφ systΘm v PHP</h2>
<p id='prepend'>O p°φΦinßch a d∙le₧itosti odd∞lovßnφ dat od zpracovacφch funkcφ a prezentaΦnφho rozhranφ u₧ se toho napsalo mnoho. ProblΘmem takzvan²ch Üablonovacφch systΘm∙ je ovÜem jejich slo₧itost, kterß na jednu stranu poskytuje jist² komfort, na druhou stranu vÜak brßnφ snadnΘmu pochopenφ a vyu₧itφ t∞chto moloch∙ ve vlastnφch aplikacφch. Proto bych vßs cht∞l seznßmit se systΘmem P.E.T., kter² zvlßdß mnohΘ a p°itom se jej nauΦφte b∞hem n∞kolika minut.</p>
<p><strong>P.E.T.</strong> je zkratkou pro anglickΘ <strong>Processor Engine for Templates</strong>, aΦkoli autor systΘmu tvrdφ, ₧e <a href='http://php-pet.sourceforge.net/english_index.html'>P.E.T.</a> je nejen zpracovacφm nßstrojem, ale zßrove≥ jazykem pro tvorbu Üablon. Cel² systΘm je vlastn∞ jednou jedinou t°φdou o t°ech parametrech a devφti metodßch. Primßrn∞ je P.E.T. zam∞°en pro prßci s (X)HTML, nicmΘn∞ jej lze dφky jeho jednoduchosti pou₧φt pro p°φpravu jakΘhokoli v²stupu. Je ovÜem pravdou, ₧e se naprosto ideßln∞ hodφ pro modernφ webovΘ strßnky v beztabulkovΘm layoutu, pro jejich linearitu.</p>
<h3>èablony a znaΦkovßnφ</h3>
<p>V dalÜφm textu si p°edvedeme vyu₧itφ P.E.T. na fragmentech jednoduchΘho (X)HTML souboru. ZaΦneme zßpisem specißlnφch konstrukcφ, kterΘ budou v Üablon∞ chßpßny jako °φdφcφ instrukce. V podstat∞ existujφ jen t°i, pro vlo₧enφ jednoduchΘho ·daje, pro smyΦku, kterß opakovan∞ vlo₧φ vyznaΦen² k≤d dopln∞n² o p°ipravenß data, a pro <acronym title='Server SideIncludes'>SSI</acronym>, co₧ je vlastn∞ jin² soubor, jeho₧ obsah mß b²t do Üablony zaΦlen∞n. To vÜe se zapisuje formou b∞₧nΘho komentß°e.</p>
<div class='list'>
<ul>
<li>Vlo₧enφ jednoduchΘ hodnoty, nap°φklad jmΘna:
<div class='sample'>
Dnes mß svßtek <!-- {oslavenec} -->!
</div>
</li>
<li>Vlo₧enφ opakujφcφ se sekvence, kterß m∙₧e obsahovat nap°φklad v²pis polo₧ek telefonnφho seznamu (smyΦky se mohou vno°ovat a jejich provßd∞nφ trvß tak dlouho, dokud jsou k dispozici vklßdanß data):
<div class='sample'>
<ul>
<br /><!-- begin loop {osoby} -->
<br /> <li><!-- {jmeno} -->
<br /> <ul>
<br /> <!-- begin loop {cisla} -->
<br /> <li><!-- {telefon} --></li>
<br /> <!-- end loop -->
<br /> </ul>
<br /> </li>
<br /><!-- end loop -->
<br /></ul>
</div>
</li>
<li>Vlo₧enφ externφho souboru:
<div class='sample'>
<!--#include virtual="menu.htm" -->
</div>
</li>
</ul>
</div>
<h3>P°φprava dat</h3>
<p>P°φprava dat spoΦφvß v naΦtenφ t°φdy P.E.T., zalo₧enφ objektu typu "pet", provedenφ u₧ivatelskΘho skriptu a p°i°azenφ dat objektu. Pokud vyjdeme z v²Üe uveden²ch p°φklad∙, vystaΦφme si z hlediska P.E.T. se t°emi metodami. Nejprve musφme naΦφst t°φdu a zalo₧it objekt:</p>
<div class='sample'>
require_once('class_pet.eng.inc.php');
<br />$template = new pet;
</div>
<p>Nßsledn∞ p°ikroΦφme k zφskßnφ dat, kter²mi se bude plnit naÜe Üablona. K tomu budeme pot°ebovat jednoduchou hodnotu se jmΘnem oslavence a dataset, jeho₧ obsahem bude seznam lidφ a jejich telefonnφch Φφsel. (V p°φkladu si pot°ebnΘ prom∞nnΘ jednoduÜe vyrobφme, v reßlu bychom je zφskßvali nejspφÜe z n∞jakΘho externφho zdroje, nap°φklad databßze.) Tato data pak p°i°adφme naÜemu objektu:</p>
<p>Poslednφm krokem p°ed velk²m finßle je naΦtenφ Üablony, se kterou majφ b²t data slouΦena. To se za°φdφ snadno:</p>
<div class='sample'>
$template->read_file('kamaradky.tpl.htm');
</div>
<h3>Zpracovßnφ a v²stup</h3>
<p>V tΘto chvφli mßme objekt, kter² obsahuje vÜechna naÜe data a Üablonu, do kterΘ je chceme umφstit, tak°φkajφc v surovΘm stavu. Pomocφ r∙zn²ch metod m∙₧eme s p°ipraven²m obsahem manipulovat (nap°φklad jej exportovat do souboru a podobn∞), my ale pou₧ijeme pouze metodu pro slouΦenφ Üablony s daty a v²stup hotovΘ strßnky:</p>
<div class='sample'>
$template->parse();
<br />$template->output();
</div>
<p>Jak vidφte, prßce s P.E.T. je skuteΦn∞ jednoduchß. Velikost a provedenφ P.E.T. umo₧≥ujφ jeho vyu₧itφ jak pro rychlou p°φpravu jednoduch²ch strßnek, tak i jeho snadnou integraci do v∞tÜφch aplikacφ, kde lze zßkladnφ t°φdu podle pot°eby upravit nebo doplnit o chyb∞jφcφ funkΦnost - aΦkoli osobn∞ se domnφvßm, ₧e ve v∞tÜin∞ p°φpad∙ postaΦφ to, co P.E.T. u₧ umφ.</p>
<p>Dokumentaci, p°φklad a t°φdu samotnou si m∙₧ete stßhnout bu∩ ze strßnek <a href='http://sourceforge.net/project/showfiles.php?group_id=70316'>P.E.T. na SourceForge.net</a> nebo p°φmo <a href='podklady/malek/696/complete_pet.zip'>z Intervalu</a>. V druhΘm p°φpad∞ budete zv²hodn∞ni tφm, ₧e jsem vÜechny materißly zabalil do jednoho archivu a navφc jsem do Üablony doplnil chyb∞jφcφ °ßdek Φφslo 373 (p°φkaz "else").</p>
<li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2856'>ZnakovΘ sady v praxi</a></li>
<li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2849'>Vytvß°enφ dokument∙ PDF v PHP</a></li>
<li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2852'>Interval v zajetφ Φφsel</a></li>
<li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2850'>CSS2 - podpora kaskßdov²ch styl∙ v sedmiΦkovΘ °ad∞ Opery</a></li>
<li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2844'>P.E.T. - jednoduch² Üablonovacφ systΘm v PHP</a></li>