pornel.net/szablony Dzięki! :) Bardzo ciekawy artykuł :> Zwraca uwagę właśnie na te problemy, które i mnie nurtują. Dwa z wymienionych tam rozwiązań mnie zainteresowały [PHPTAL i XT] i muszę się im dokładniej przyjrzeć :) Są bardzo bliskie temu, czego szukam.
BTW do porneL'a [bo widziałem, że gdzieś tu się kręci]: W przykładzie Smarty popraw sobie końcówkę kodu: {if $em}{/if} na: {if $em}{/if} ;) A stronę dodaję sobie do zakładek, bo widzę że jest tam więcej ciekawego stuffu ;J
Szablony języki, logika i cache
Załóżmy, że mam do wyświetlenia tabelę mającą "bardzo dużo" rekordów ;P [to "bardzo dużo" to może być np. albo i więcej]. Typowe rozwiązania klas do obsługi szablonów działają tak, że najpierw przygotowują wszystkie dane do wyświetlenia w pamięci RAM, następnie wsadzają je do szablonu również trzymając go w RAM, a dopiero gotowy szablon wysyłają do przeglądarki. Oznacza to, że dane pobrane z bazy muszą być trzymane w całości w RAM, w dodatku dwa razy! [plus narzut na resztę kodu szablonu, poza samymi danymi wstawionymi do niego ;P]. Nie używając szablonów rozwiązywałem ten problem tak, że pobierałem z bazy [lub z pliku] pojedyncze rekordy [lub linie], jeden po drugim, opakowywałem w tagi pojedynczego rzędu tabeli, i od razu wysyłałem do przeglądarki. Dzięki temu jednorazowo musiałem trzymać w RAM tylko ten jeden rekord. Jak osiągnąć ten sam efekt używając szablonów? Czy wogóle jest coś takiego możliwe, gdy się używa szablonów? Bo z tego co widzę, szablony nie pozwalają na generowanie dużych tabel "w locie", lecz wymagają przechowywania i złożenia od razu całości. A może o czymś nie wiem? hmm phptal.pl/manual/tal:repeat php.net/manual/pl/language.oop5.iterations.php cos by mozna bylo zrobic, ale z wysylaniem do przegladarki bedzie problem, bo echo() jest jedno, po przetworeniu calego szbalonu ale PHPTal jest na GNU LGPL, wiec mozna poprawic
Mocno nietypowe przypadki rzadko są dobrym przykładem.
Czy mam przez to rozumieć, że systemy szablonów zostały przewidziane tylko do mocno typowych przypadków?
SasQ
Tak, systemy szablonów zostały przewidziane dla mocno typowych przypadków. W Twojej sytuacji (wysyłanie prostego strukturalnie, ale dużego XMLa) nie bardzo widzę sens stosowania szablonów jako takich.
Pozdrawiam, Adam
Tak, systemy szablonów zostały przewidziane dla mocno typowych przypadków. W Twojej sytuacji (wysyłanie prostego strukturalnie, ale dużego XMLa) nie bardzo widzę sens stosowania szablonów jako takich.
Adam Byrtek
Dodam tylko, że jeśli jednak chcesz użyć szablonów, proponuję napisanie iteratora, czytającego dane rekord po rekordzie i przekazanie takiego obiektu do szablonu.
Pozdrawiam, Adam