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