P.E.T. – jednoduchý šablonovací systém v PHP

21. listopadu 2003

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.E.T. je zkratkou pro anglické Processor Engine for Templates, ačkoli autor systému tvrdí, že P.E.T. 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.

Šablony a značkování

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 SSI (Server Side Includes), 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.

  • Vložení jednoduché hodnoty, například jména:

    Dnes má svátek <!– {oslavenec} –>!

  • 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):

    <ul>
    <!– begin loop {osoby} –>
       <li><!– {jmeno} –>
          <ul>
             <!– begin loop {cisla} –>
             <li><!– {telefon} –></li>
             <!– end loop –>
          </ul>
       </li>
    <!– end loop –>
    </ul>

  • Vložení externího souboru:

    <!–#include virtual=“menu.htm“ –>

Příprava dat

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:

require_once(‚class_pet.eng.inc.php‘);
$template = new pet;

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:

$oslavencovo_jmeno = ‚Jana‘;
$template->add_content($oslavencovo_jmeno, ‚oslavenec‘);
$osoby[‚jmeno‘][] = ‚Pavlína‘;
   $subarray[‚telefon‘][] = ‚526895361‘;
   $subarray[‚telefon‘][] = ‚156395742‘;
   $osoby[‚cisla‘] = $subarray;
$seznam[] = $osoby;
   unset($osoby[‚cisla‘]);
$osoby[‚jmeno‘][] = ‚Hana‘;
   $subarray[‚telefon‘][] = ‚434343844‘;
   $subarray[‚telefon‘][] = ‚737375187‘;
   $osoby[‚cisla‘] = $subarray;
$seznam[] = $osoby;
   unset($osoby[‚cisla‘]);
$template->add_content($seznam, ‚osoby‘);

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:

$template->read_file(‚kamaradky.tpl.htm‘);

Zpracování a výstup

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:

$template->parse();
$template->output();

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í.

Dokumentaci, příklad a třídu samotnou si můžete stáhnout buď ze stránek P.E.T. na SourceForge.net nebo přímo z Intervalu. 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“).

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Předchozí článek rakija
Štítky: Články

Mohlo by vás také zajímat

Nejnovější

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *