Starší komentáře ke článku: P.E.T. - jednoduchý šablonovací systém v PHP

Zpět na článek | Úvodní stránka Interval.cz

Avatar

Autor komentáře: Jakub Podhorský

Datum vložení: 21.11.2003 17:10:09

chci se zeptat umi tato sablona kompilovat scripty, ukladat si je do cache na nejakou dobu a daji se zmenit znacky nazveme to promenych v sablonach na {PROMENA} ??

Jestli ano tak to neni spatna vec jinak jestli ne zustavam u Smarty :)

Avatar

Autor komentáře: Vilém Málek

Datum vložení: 21.11.2003 17:28:18

1. Nevím přesně, co si představujete pod "kompilací" skriptů. Pokud tím myslíte totéž co já, pak to IMHO zvládnou lépe přímo nástroje k tomu určené (serverové komponenty).

2. Jde o velmi jednoduchý systém, žádné kešování v něm není přímo obsaženo, je ale možno P.E.T. napojit na vlastní kešovací systém. I tak je P.E.T. rychlejší než SMARTY, protože jeho vlastní kód má pouhé 4 kB a jeho inicializace je blesková. Nicméně se domnívám, že kešování zvládne mnohem lépe patřičná serverová komponenta.

3. Značky pro proměnné si můžete změnit, pokud chcete, musíte ale upravit patřičným způsobem také funkce, které s nimi pracují.

4. Nevzpomínám si, že bych někomu P.E.T. vnucoval ;-)

Avatar

Autor komentáře: Jakub Podhorský

Datum vložení: 21.11.2003 20:26:48

1) kompilaci v tomto pripade neberte jako kompilaci doslove jako v pripade C++ apod. kompilaci jsem myslel to co ma presne Smarty cili z sablony vam trida Smarty udela nomrlani PHP stranku a nemusi ji tedy znovu parsovat ale rovnou nacte tu PHP stranku kterou vytvori ale jenom v pripade ze ta sablona nebyla modifikovana jinak to musi opet znovu prepsat

2) s tim souhlasim ale kesovani se kazdopadne hodi :)

3) dobre ja sem cekal ze to bude primo v konfiguraci :) tak abych nemusel zasahovat do kodu te tridy :)

4) asi jsem ten muj prispevek spatne podal a je me jasne ze jste to nevnucoval :)

kazdopadne verim ze PET bude vykonej system protoze neni tak rozsahlej jako smarty

Avatar

Autor komentáře: Vilém Málek

Datum vložení: 21.11.2003 23:02:13

Co se týče té kompilace, tak tu P.E.T. umožňuje, ale její management si už musíte s využitím patřičných rozhraní dopsat sám.

Já osobně v P.E.T. vidím především jednoduchý a průhledný systém, který dobře poslouží pro osobní stránky a jako výukový materiál pro ty, kteří si chtějí vytvořit vlastní šablonovací systém coby integrální součást nějaké své aplikace ;-)

Avatar

Autor komentáře: Jakub Podhorský

Datum vložení: 22.11.2003 12:35:59

jj to verim kazdopadne muj favorit je Smarty takze zustanu u nej :)

Avatar

Autor komentáře: Vít Peprníček

Datum vložení: 23.11.2003 16:36:31

Vykonost systemu zaleží spíš na tom jak optimalizovane algoritmy jsou. Pokud se pri kazdem volani metody musi sablona znovu parsovat tak to bude pomalejsi nez kdyz se pri prvnim nacteni rozparsuje do nejake mezipodoby a pri zpracovani se uz jen slepi dohromady.
Muj sablonovy system napred sablonu znak po znaku projde rozdeli na "slova" jazyka pote zanalizuje logiku šablony a vse ulozi do associativniho pole. kde je treba
array(
array(type=>static, content=>' staticky kod sablony '),
array(type=>variable, name=>'nazev_promenne'),
)
Nakonec to vse "slepi" dohromady. Navic umi cachovat takze se sablony parsuji jen pri zmene.

Jeste zalezi jak tu vykonost chces merit velka, mala sablona 1 nebo 1000 vygenerovani 1 nebo 1000 spusteni skriptu.

Avatar

Autor komentáře: Raven

Datum vložení: 3.5.2004 15:25:15

Dobrz den potřeboval bych pomoct.Dostal sem ukol vytvorit prezentaci fotek v php a nevím si s tímrady. Mohl bych poprosit o adresu a nebo script k tomuto problemu?

Avatar

Autor komentáře: Vilém Málek

Datum vložení: 3.5.2004 15:40:10

Dotazy tohoto typu, prosím, nepište do diskuze pod články, není k tomu určena. Pokud na hledané téma žádný článek nenaleznete, obraťte se se svým dotazem do našeho Interfóra, viz <a href='http://interforum.interval.cz' target='_blank'>http://interforum.interval.cz</a> ;-)

Avatar

Autor komentáře: Petr Juhaňák

Datum vložení: 22.11.2003 23:34:47

Dobrý den, ikdyž to nesouvisí s P.E.T.
Na co jsou šablony dobré...? Vedou k vyšší abstrakci a oddělení obsahu od HTML.

Ale ja jako programator si naprogramuju funkci/tridu, ktera mi vraci data. napriklad $stranka->getAnketa(). Jaka je pak vyhoda šablon. Nejde mi o prosazení svých metod, ale kde je ta praktická hranice přejít na šablony. Uvítal bych konkrétní modelové situace.

Avatar

Autor komentáře: Vilém Málek

Datum vložení: 22.11.2003 23:43:19

Já osobně vidím výhodu v tom, že člověk nemusí dělat desetkrát stejnou věc a že jsem do určité míry nezávislý na technologii.

IMHO je zde vidět přirozený vývoj od jednoduchých HTML stránek, kdy bylo nutno vše provádět opakovaně pro každou stránku zvlášť ručně, přes stránky generované skripty z DB, kdy se stejná funkce použila ve libovolném počtu souborů, až po současnost, kdy si mohu nezávisle na sobě měnit strukturu (či dokonce typ) DB, zpracovací skripty (či dokonce skriptovací technologii) a vzhled výsledného výstupu (či dokonce jeho formát). Ployne z toho menší závislost na použitých prostředcích, vyšší flexibilita, zrychlení vývoje atd.

Prostě člověk je od přírody líný tvor a šablonovací systém mu ušetří spoustu námahy a času, který může věnovat nějaké jiné ptákovině ;-)

Avatar

Autor komentáře: Jakub Podhorský

Datum vložení: 23.11.2003 10:53:02

no cas mu podle me usetri az pri pozdejsich upravach ze zacatku je to trochu pakarna :)

Avatar

Autor komentáře: Lukas Nevosad

Datum vložení: 23.11.2003 13:18:17

Take me nenji uplne jasna vyhoda sablon. Jasne, v uvedenem prikladu je to zrejme, ale v praxi narazime na takove drobnosti, jako jsou treba podminky a uz je cely system v haji. Napriklad u nekterych zaznamu mame jenom jmeno a prijmeni - to staci vypsat na jeden radek, ale u nekterych je navic i adresa...

Neni me uplne jasne, jaka je vyhoda pouzit nejaky externi sablonovaci system, nebo uplne na stejnem principu includovat primo prezentacni .php, pouze komentare zamenime misto <!-- {jmeno} --> za <?php echo $zaznam['jmeno']; ?> Podle me to ma obrovskou vyhodu v tom, ze v ramci prezentace jde vyuzit mocnosti celeho PHP a ne jen par vlastnosti sablon a urcite to bude i rychlejsi nez parsovat nejaky soubor za pomoci funkci v PHP...

Jeste ke kesovani - jestli jsem dobre pochopil, cacheuje se vzdy prelozeny kod. V pripade ze mame vystup realizovany za pomoci echo $neco;, jsou v kodu vzdy primo tyto primitivni instrukce. Jakmile ale pouzivame sablony, MUSI tam slozity kod, ktery otevre soubor, proparsuje ho, nahradi <!-- {neco} --> a preda na vystup. Netvrdte mi ze timhle pristupem se da usetrit vykon!!! Takze cacheovani MA samosrejme vyznam hlavne na urovni sablon, paklize tyto generuji pri zmene nejaky pomocny .php a ten pak misto thoho aby do kodu vrazili tu sekvenci parsovani pouze inkluduji!!!

A jeste OT: Nedalo by se neco udelat s vasim CSS aby ty zdrojaky byly citelne i v Opere? Mam namysli konce radku...

Avatar

Autor komentáře: Lukas Nevosad

Datum vložení: 23.11.2003 13:20:59

omlouvam se za preklepy, se zlomenym prstem se nepise dvakrat prijemne...

Avatar

Autor komentáře: Vilém Málek

Datum vložení: 23.11.2003 13:52:55

Ad šablony: Problém je v tom, že na celou věc hledíte jakožto programátor, majitel a zároveň autor těch stránek. Výhody šablon se projeví v plné chvíli teprve tehdy, když se na projektu podílí velká skupina lidí, z nichž každý je odpovědný a do detailu ovládá pouze určitou část toho projektu. Nebo pokud jste člověk programování neznalý a přesto chcete poskytnout nějaké informace veřejnosti - pak díky šablonám nemusíte umět nic víc, než jen vložit data na správná místa ;-)

Ad Opera: Viz <a href='http://interforum.interval.cz/ShowPost.aspx?PostID=1825' target='_blank'>http://interforum.interval.cz/ShowPost.aspx?PostID=1825</a>

Avatar

Autor komentáře: Lukas

Datum vložení: 24.11.2003 20:36:26

Ano, ovsem tim se da cely problem pretransformovat na problem toho, jak zabranit aby clovek ktery ma na starosti sablony nezprasil svoji neznalosti cely skript, mate asi pravdu v tom ze kdyz udela chybu v sablone, maximalne se neco nezobrazi nebo se to zobrazi jinak nez chtel, kdyz to bude delat v PHP a vynecha strednik, tak skonci vystup stranky u erroru pri parsingu...

Jinak ale imho neni zasadni rozdil v tom, jestli tu cvicenou opici naucim <!-- {jmeno} --> nebo <?php Out('jmeno'); ?>

Avatar

Autor komentáře: El Brujo

Datum vložení: 23.11.2003 16:48:42

<!-- {jmeno} --> za <?php echo $zaznam['jmeno']; ?>
a co kdyz budes chtit pouzit stejnou "sablonu" jinde a budes mit jiny nazev promenne nez $zaznam ? Nebo co kdyz budes chtit jednou vystup poslat do prohlizece a jindy stejnym vystupem generovat treba mail. Vyhody sablon poznas spis u velkych projektu. podivej se treba na <a href='http://www.mmsak.cz' target='_blank'>http://www.mmsak.cz</a> <a href='http://www.trnky-brnky.cz' target='_blank'>http://www.trnky-brnky.cz</a> a <a href='http://www.mmscontent.info' target='_blank'>http://www.mmscontent.info</a> je to jeden web, jedna db, jedny skripty na jednom serveru, jen se nacitaji jine sablony.

Avatar

Autor komentáře: V.M.

Datum vložení: 24.11.2003 10:00:57

Stejne ty sablony moc nechapu, mozna ze je to tim ze nejsem "odkojen" Php. takze automaticky, kdyz chci neco zapouzdrit a vicenasobne pouzit, udelam si tridu. Maji sablony nejakou jednoznacnou vyhodu?

Avatar

Autor komentáře: Petr Juhaňák

Datum vložení: 24.11.2003 11:25:14

soulasím autorem, třída je lepší než šablona

Avatar

Autor komentáře: Vilém Málek

Datum vložení: 24.11.2003 12:05:38

Šablona a třída jsou dvě odlišné věci. Třída je napsána v programovacím jazyce, je jeho součástí a je na něm závislá. Šablona je popsána metajazykem (v případě P.E.T. jde vlastně o klasické HTML), není součástí konkrétního programu ani programovacího prostředí a je proto na něm nezávislá. Důsledky, doufám, si dokážete vyvodit sám ;-)

Avatar

Autor komentáře: Lukas Nevosad

Datum vložení: 24.11.2003 21:02:42

OK, to byla ukazka, i z hlediska pohodlnosti je lepsi napsat si na to funkci nebo lepe tridu <?php Out('jmeno'); ?>. Nevidim zadny rozdil mezi generovanim mailu a HTML vystupem - bud primo prilozim HTML (treba bez hlavicky a paticky) nebo musim mit stejne v obou pripadech sablonu pro txt vystup. To stejne v pripade vystupu napriklad pro PDA nebo WAP...

Ty uvedene stranky me nijak zvlast rozsahle nepripadaji. Skoro bych rekl ze stejneho efektu se da docilit inkludovanim hlavicky a paticky pro kazdou stranku/web.

Defacto sablonovaci system ma pouze donutit uzivatele vytvorit trivrstvou aplikacni architekturu, tedy oddelit vrstvu aplikacni od prezentacni. Ted jde o to jak moc je chcete oddelit - sablony vas donuti oddelit je uplne, bez vyjimky. To ma sve vyhody, ale take nevyhody.

Napriklad kdyz vypisuji obsah nakupniho kosiku a mam data pripravena podobne jako do sablon, tak si vystacim s jednim cyklem foreach a celkovou cenu spocitam jednoduse pri vypisovani. Pokud pouziji sablony, musim tu celkovou cenu mit spocitanou dopredu a nekde ulozenou - v sablone uz ji nespocitam...

Dalsi prusvih muze byt treba vyplnovani tabulek - mam ve zvyku strkat do prazdnych policek tabulky tvrdou mezeru, jinak se nekorektne zobrazuje CSS border. Takze mam aplikacni cast, ktera me pripravi data - kdyz pouzivam sablony, neni jina cesta nez uz v ni si pripravit do prazdnych policek &nbsp; lec ouha! Co kdyz chci ten stejny vystup narvat i do TXT mailu? To je imho pres sablony neresitelne. V mem priklade vse vyresi dalsi funkce >td<<?php echo NotBlank(Out('jmeno')); ?>>/td<

Jo a btw. mrknete se na ty svy stranky v Opere, nejak se vam to rozpada pri vyberu operatora...

Avatar

Autor komentáře: Lukas Nevosad

Datum vložení: 24.11.2003 21:05:18

jojo, vetsi mensi to bylo vzdycky moje...
<td><?php echo NotBlank(Out('jmeno')); ?></td>

Avatar

Autor komentáře: Jakub Podhorský

Datum vložení: 24.11.2003 22:01:26

dobre vase nazor jsou z casti pravdive ale co kdyz jste nuceni prejit na jiny jazyk(platformu) napriklad. ASP pak co? musite priposovat tuny a tuny kodu kde mate <?php echo nejakaFunkce('neco'); ?> a prepisovat to na neco jinyhe nevim jak je to presne v ASP a pritom kdyz mate tridy(funkce) pripravene jak pro PHP tak i pro ASP a fungujou stejne tak vam staci jenom prekopirovat ty stranky nic vic a vystup bude proad stejny...

jinak pokud vim tak problematika sablone se resina na forech Builderu

Avatar

Autor komentáře: Stefan

Datum vložení: 26.11.2003 9:15:58

{$row->jmeno|null2nbsp} řešení mezer ala Smarty :O))) ten filtr tam sice myslím není ale napsat ho je otázka na 2min.
Jinak je to také malinko o tom jak kdo píše, já košík řeším třídou a ta prostě ví co v košíku je, kolik toho je a co to stojí, nemusím to počítat v průběhu vypisování :O))
Jinak osobně si myslím že šablony přinášejí výhody, obecně je ve všech řešeních pro web vidět příklon k tomuto modelu, takže většina programátorů to zjevně shledává pozitivním. Pokud vám to nevyhovuje je to vaše volba :O))) Většina uváděných příkladů je řešitelná zcela bez problémů a snadno. Jenom je potřeba je řešit a né všude křičet "šablony jsou na nic" :O)))

Avatar

Autor komentáře: Roman Dušek

Datum vložení: 24.11.2003 14:51:58

A neni lepsi resit "sablonovani" pres XHTML+CSS / XML+XSLT?

Avatar

Autor komentáře: Stefan

Datum vložení: 25.11.2003 9:33:44

Ano to je dobrá cesta, má ale pár háčků. Neznám skoro žádný hosting, pro menší projekty kde se tato technologie dá použít. Je to dost náročné na procesor a paměť. V PHP neexistuje podpora kešování výsledků transformací takže si toho spoustu musíte dopsat sám a to už je jednodušší použít nebo si napsat šablony.

Avatar

Autor komentáře: entita

Datum vložení: 25.11.2003 7:04:56

Pred nejakym casem jsem si take porad rikal k cemu jsi ty sablony dobre. Pak jsem jednou udelal celkem slozitou stranku pomoci sablony a zabralo to strasne malo casu. A hlave potom nasledne modifikace. Uplna brnkacka. Nejsem uz schopen tvorit PHP skripty bez sablon. Jsem na nich zavisly...
:-)))

Avatar

Autor komentáře: Jan Brašna

Datum vložení: 25.11.2003 20:06:08

<I>"Nejsem uz schopen tvorit PHP skripty bez sablon"</I> -- asi myslis aplikace/weby, a ne jednotlive skripty, ne? ;)

Avatar

Autor komentáře: Jan Brašna

Datum vložení: 25.11.2003 20:09:01

<I>"Nejsem uz schopen tvorit PHP skripty bez sablon"</I> -- asi myslis aplikace/weby, a ne jednotlive skripty, ne? ;)

Avatar

Autor komentáře: entita

Datum vložení: 26.11.2003 6:16:30

myslim tim PHP skripty, ktere produkuji vystup s informacemi pro uzivatele nebo uzivatelske rozhrani. Co jineho bych mohl myslet? Je jeste nejaka jina moznost?

Avatar

Autor komentáře: El Brujo

Datum vložení: 26.11.2003 14:48:12

No já nepoužívam šablony u jednoho skriptu který projíždí a synchronizuje data v db protože výstup jsou jen tečky a občas chybová hláška a protože chci sledovat prúběh ale jinak jedine šabolny.
jinak k te mezere v td - v mem template engine je to takto
~#if(content)~~content~~#end~ ~#end~ nebo muzu pouzit filtr
~content>etc->space2nbsp~

Avatar

Autor komentáře: -jsi-lama-

Datum vložení: 29.11.2003 19:35:01

-- jste lamy!

-- na netu mate spoustu templatovacich enginu, a vy se tu hadate, kterej z nich je lepsi... chapejte, ze tyto templatovace, o kterych se tu ted bavite, jsou hracky pro deti. skutecne produktivni templatovaci enginy existuji - ANO! ale k tem se vy nedostanete, protoze jsou to draze placene "proprietary" technologie a jsou na mile daleko od nejakeho SMARTY, p.e.t, pat template nebo fast templates.....

-- tyto "proprietary" enginy jsou i pro PHP

-- produktivita prace diky jejich pouzivani je minimalne petinasobna nez s tim nejlepsim, co si jako freeware stahnete na internetu

-- to same o produktivite plati i oproti ASP.NET ci JSP

-- "kvalita" templatovaciho enginu se neda posuzovat podle toho, jestli je to rychle, jestli to "kešuje", nebo jaky to pouziva znackovaci jazyk (vsechno je to tak podobne, az je to zcela nedulezite)

-- ona "kvalita" je
* jak to dokaze pracovat na skutecnych datech
* jake jsou pro to editacni nastroje a jak rychle se sablony daji vyvijet, debugovat a menit
* jakou praci dokazete udelat v jakem case ( s jakymi naroky )

-- pripada mi, ze nemate co na praci, vy si pouzivejte co chcete a shnijte ve sve neznalosti - vivat open-source !

podpis - ten co rika pravdu, ktera vas nasere!

Avatar

Autor komentáře: Daniel Mejta

Datum vložení: 7.12.2003 15:36:12

Domnivam se, ze server Interval slouzi primarne pro programatory jak zacinajici, tak pokrocile. Slouzi jako zdroj informaci a inspirace pro propertialni reseni konkretnich situaci, ve kterych se programator nachazi a budiz to tak brano. Pokud nekdo chce v diskusi ke clanku slapat po neci praci, je to jeho problem. Ale proc slapat po praci, ktera pomuze spouste tonoucim programatorum? Platis snad za tyhle ifnormace, abys mohl rict "tohle je na nic, ja chci reklamovat Vase sluzby" ? Pokud znas lepsi technologie, proc o nich taky nenapises? Proc se tu neobjevuji konstruktivni reseni a dalsi moznosti jak rozsirit prezentovany kod? To by myslim pomohlo vsem vice, nez pouhe jestli P.E.T. je lepsi nez Smarty, jestli se ma cenu zabyvat open-source, nebo komercnima projektama. Ma informace, ze shnijeme, pokud se zabyvame open-source, nejakou informacni hodnotu?
A o to tu myslim jde.

A taky se domnivam, ze budes nad mou odpovedi asi skakat radosti, protoze jsem se opravdu trochu nasral. A taky se omlouvam vsem, kdo maji stejny nazor jako ja a musi cist tento prispevek, protoze ten odporuje tomu, co jsem psal vyse.

Samozrejme i tvuj prispevek ma nejakou informativni hodnotu pro upresneni toho, co by sablonovy system mel splnovat.

Kazdopadne diskuse o P.E.T. vs. Smarty vs. komercni projekty, konkretne co je lepsi, nebo horsi neni dulezita. Dulezitejsi je, co vice vyplnuje potrebu daneho programatora a co je vhodnejsi pro reseny projekt. To si ale musi kazdy rozhodnout sam. Domnivam se, ze pro mensi projekty je P.E.T. vhodnym systemem. Ale to at si kazdy rozhodne sam.

Mejte se Hura

Avatar

Autor komentáře: Zdeno Sekerak

Datum vložení: 20.12.2004 13:14:35

Tvoj prispevok je plny ignoranstva a nadutosti. Proste hroza. Ak nemas neake konstruktivne nazory tak si taketo vylevy pis do svojho BLOGu mozno ich niekto bude citat. To ze si sa nepodpisal je uz len bodka na tvojom mene. Si IDIOT.

Avatar

Autor komentáře: JoHnY

Datum vložení: 26.9.2004 13:15:06

PET je naprosto idealní tepmlpate system a upravy a ruzné háčky. Například se mi vůbec nelíbila syntaxe pomoci komentařů a neošetření erroru.
<?pte-{ }?>

Zpět na článek | Úvodní stránka Interval.cz