Fruit International

Obrazek ovoce

Scientologie je out, ted frci scientometrie!

Fruit Intl. morálně podporuje následující projekty:

schemik.sourceforge.net
diagnose.sourceforge.net
www.rustina-preklad.cz
petruj.eu/blog/

Sablony v PHP jeste rychleji

jedna vec mne na templatovacich enginech pro PHP docela vadi, ze se snazi vytvorit si vlastni jazyk - at uz jsou to smarty, ultratemplates, cokoliv dalsiho nebo treba xslt, pricemz tyto jazyky nedosahuji kvalit beznych jazyku, protoze jejich syntaxe je desna nebo chybi standardni knihovny. 

osobne pouzivam tutu hezkou hracku:
class Sitcom {

        private $values = array();

        public function set($name, $value)
        {
                $this->values[$name] = $value;
        }

        public function render($template)
        {
                foreach ($this->values as $___name => $___value)
                        $$___name = $___value;

                ob_start();
                include($template);
                $___content = ob_get_contents();
                ob_end_clean();
                return $___content;
        }
}

neni to nic duchaplneho, jenom do prostredi vykreslovaci funkce se nactou promenne a vyvola se php-kod (sablona), ktery k temto promennym muze pristupovat. navic je to odchycene do bufferu... aby slo s touto hodnotou pracovat.

sablona pak vypada takto:
Hello <?= $name ?>
What's the time? <?= $time ?>
kod v aplikaci pak:
$tpl = new Sitcom();
$tpl->set("name", "Tim Taylor");
$tpl->set("time", "It's Tool Time!");
echo $tpl->render("sample.tpl");

nazvat to templatovacim enginem je silne slovo, ale umoznuje to docela efektivne oddelit logiku od prezentace a hlavne neklade to nejake extra naroky na nove uceni (zadne nestandardni funkce a konstrukce), jenom to cloveka nuti vic premyslet nad tim, co si jeste podrzi ve funkci a co posle do sablony.

na zaver, male rypnuti -- php je dobry textovy preprocesor, tak proc jeho funkci nevyuzit a snazit se v nem psat dalsi jazyky, ktere delaji de facto to same?

Vytvořil(a) deda.jabko v 05. 03. 2007, 11:20