Vkládání obsahu pomocí PHP III
Před dvěma lety jsem psal o triviálním vkládání obsahu do stránky pomocí PHP. Části stránky, které se často opakují, tak nemusíte na větších projektech neustále opisovat. Nejjednodušší je použití příkazu include. O třídu lepší jsou parametrizovatelné, uživatelem definované funkce, kterými můžete např. jednoduše měnit každé stránce title. A pro profíky jsou tu šablonovací systémy.
Šablonovací systém umožňuje jednoduše oddělit práci programátora a kodera/grafika. Programátor si bastlí svoje php v jiných adresářích, než kodér svoje HTMLko, a tudíž se práce odděluje a zpřehledňuje. Tento postup sice místy vyžaduje vyšší míru spolupráce při definování proměnných apod., ale v konečném efektu ušetříte práci, kterou byste řešili lamentováním nad kolizemi.
Stinnou stránkou šablonovacích systémů budiž fakt, že je potřeba dalšího výpočetního výkonu serveru pro překlad šablon do nějaké zobrazitelné podoby. Většina systémů řeší tento nedostatek cachováním. Další stinnou stránkou budiž nutnost naučit se další syntaxi a určitý nezvyk v počátcích používání šablon.
Osobně na projektech pracuji s všeobecně rozšířeným šablonovacím systémem SMARTY a postarší, leč stále plně dostačující sérii článků o SMARTY na Intervalu. Používáte je taky?
Pod čarou: Druhý díl této PHP série nikdy nevyšel, protože WordPress má nějakou potíž s uveřejněním článků, které jsem začal psát ještě ve verzi 1.0 (teď jsme u dvojnulky). Protože i tento článek mi byl napoprvé bez jakékoliv hlášky smazán při publikaci, tak jsem si vzpoměl na tentýž stav před rokem u druhého dílu. Nu co už, mám blogovat rychleji.
Komentáře
Ano, Smarty používáme a jako kodér si to pochvaluji. Občas je sice docela oříšek ve Smarty vyrobit něco, co mi programátoři nechtějí dodělat přímo v PHPku, ale jinak to vede k zpřehlednění práce a já můžu stylovat a řezat ještě před tím, než je kompletně hotová programová část.
Před časem jsem oo Smarty také něco napsal href=„http://www.chomat.net/weblog/weboviny/smarty-kesovani“ rel=„nofollow“>http://www.chomat.net/weblog/weboviny/smarty-kesovani a dodnes na tenhle šablonovací systém nedám dopustit.
Nebál bych se používat slovo „kešování“ (místo „cachování“), připadá mi to trochu krkolomné, skoro jako používat „team“ místo „tým“.
Ale jinak s podobnými tvary také často bojuji. :-)
Smarty nemám rád, na můj vkus už je moc komplexní a zbytečně moc „nabobtnalé“. Nějakou dobu jsem používal XTemplate (www.phpxtemplate.org), ale nakonec jsem si napsal svůj vlastní template engine, kvůli tomu aby mi na 100% vyhovoval, a taky kvůli vlastní ješitnosti :-)
Protože obě činnosti si dělám sám, tak mě to zase tak netrápí. Jakmile je domyšlena funkčnost tak si napíši „funkce“, které prozatím vracejí natvrdo napsaná data v přepodkládaném tvaru. Pak si zkóduju dokument a můžu se pustit do programování.
dělám s nimi něco málo přes rok (z toho stránky asi rok a půl :) a nedám na ně dopustit. ano, jsou robustní, ale nechají se naučit během velmi krátké doby a jejich využití je prakticky neomezené. snadno a přitom striktně odděluji aplikační vrstvu od prezentační, v šablonách mi php nesmí přes práh :)
[2] napište si vlastní plugin ;)
Smarty jsou trochu problem z hlediska rychlosti. Je sice pravda, že kešování dost praci zrychluje, ale na větších projektech se přece jen stejně nejvice vyplácí generovat normálně stránku a uložit do vlastniho souboru, což tušim dělají novinky ;)
Take jsem narazil na problem se zbytecnou komplexnosti Smarty, pouzivam PowerTemplate z duvodu naproste jednoduchosti, v podstate se do syntaxe prida jen par veci oproti html/xhtml. Veskera logika aplikace pak zustava ve tridach PHP, ne v sablone samotne :)v cemz vidim urcitou slabinu. Navic se jedna o jeden z nejrychlejsich sablonovacich systemu pro PHP.
Viz též http://php.vrana.cz/sablony.php
BTW já jsem si zamiloval objektově dělané PHP stránky, tj. třeba objekt page s vlastnostmi head, body, footer, menu, meta … s defaultními hodnotami a na stránkách pak snadné vyvolání objektu page.
Já bych se dneska bez php include nikam nepohnul. Je to výborná věc.
Ja používám HTMLTmpl a zatím bohatě stačí.