Šablonovací systémky (templates)
V poslední době jsem několikrát nezávisle na sobě narazil na šablony. Protože je to oblast, o které jsem měl pouze matné tušení, tak jsem se zkusil trošku porozhlédnout.
K čemu?
K čemu nám takové šablony vlastně jsou? Přidají trošku práce s učením se nového způsobu práce. Ale odměnou nám je oddělení aplikační logiky a vzhledu webové aplikace (podobně je tomu taky v případě XHTML a CSS, kde se odděluje obsah a vzhled) Taktéž by měly přinést pohodlnější a rychlejší vývoj aplikací.
Krásně je to vidět na příkladu, kdy se má někde předělávat grafika. Pokud je vše dělané běžným způsobem, tak je kód promíchán se značkovacím jazykem a předělávání dá trochu práce (pokud se nemění jen kaskádový styl). Pokud používáme šablony, tak změnu kódu pocítíme na tom, že musíme do grafického návrhu přidat místa, kam se bude vkládat programový kód a tím máme hotovo. Pokud půjdeme ještě dále, můžeme starou šablonu hodit grafikovi, ať si ji změní sám. (nemusí znát moc kódu, jen se bude muset naučit pár značek)
Je pravda, že programátor se může obejít i bez šablon a mít oddělený programový kód od kódu stránky, ale musí se k tomu nutit. V případě použití šablon je k tomu nucen.
Přidám ještě pár postřehů, které jsem z mého rozhlížení získal.
Základem bylo pro mě pár odkazů na blogu .devel - Generování HTML z šablon Trošku jsem prozkoumal dokumentace a objevil pár postřehů, které se mohou hodit.
Smarty
Systém, který využívá kompilace při prvním požadavku stránky používající šablonu. Dále už poskytuje kompilovaný (rychlejší kód). Má konfigurovatelné i značky, které indikují, že se jedná o kód aplikace. Díky tomu lze pro definici šablon použít libovolného nástroje. (např. dreamweaver)
Řešená objektově.
- Stránky projektu: Smarty (dokumentace)
PHPLib Template
Komplexní knihovna PHPLib, která má v sobě i podporu šablon. Obsahuje jednu třídu, která umí parsovat část html kódu a nahrazovat {nazev} za obsah proměnné.
Dále je v knihovně podpora DB_sql (abstrakční databázová vrstva), podpora práce s sessions, práv a autentikace, objektový vrstva k použití HTML formulářů.
- Stránky projektu: phplib (dokumentace)
TinyButStrong
Třída, která nahrazuje proměnné jejich hodnotou a nebo bloky výstupem nějaké specifické funkce. Demonstrace jednoduchých úkonů na stránce příkladů.
- Stránka projektu: TinyButStrong (dokumentace)
UltraTemplate
Objektově řešené nahrazování elementů podobných xml.
Hned na úvodní stránce udává, že je rychlejší než TemplatePower, PHPLib Template, FastTemplate. Ale chtělo by to vlastní test, který ukáže. Může se jednat o jedinou věc ve které je rychlejší.
- Stránky projektu: UltraTemplate
Další template systémky (výčet není kompletní)
Závěr
Každému se může zamlouvat jiný systém pro oddělení programového kódu. Já osobně zatím nepoužívám žádný, ale taky jsem si zatím žádný z výše uvedených nevybral jako úplného favorita. Smarty se mi jeví jako nejzajímavější a asi bych se při podrobnějším průzkumu ubíral tímto směrem.
Pokud si myslíte, že existuje ještě lepší (výkonnější) řešení, tak mi určitě dejte vědět.
Tip: Nevíte čím obdarovat nejbližší? Nechte je napsat Ježíškovi.