« Vesszenek a sablonnyelvek »

Avagy miért került egy láblécbe a ˆ 7658 felirat. Nos, azért, mert a Smarty-nak van egy nagyon mókás bugja, ami a következőről szól. Adott az alábbi kódrészlet:

{$smarty.now|date_format:"%Y"}

Ettől azt várnánk, hogy az aktuális időbélyeg értékét az strtotime metódus szerint évként kapnánk eredményül.

Ehelyett azonban egy minden másodpercben látszólag véletlenszerűen növekvő szám az eredmény. Nézzük, mit tudunk az strtotime-ról:

The function expects to be given a string containing an English date format and will try to parse that format into a Unix timestamp

Kis érdekesség, hogy a now szöveg mellett egyetlen szóközt is megeszik, mindkét esetben az aktuális időbélyeget adja vissza.

Azonban kis próbálgatás után láthatjuk, hogy egy időbélyeget átadva az időbélyeg-előállító metódusnak, nem szép eredményt kapunk. Miért gond ez?

Lássuk most a Smarty shared.make_timestamp.php fájljának elejét:

if(empty($string)) { 
     $string = "now"; 
} 
$time = strtotime($string);

Vagyis, a $string változó megkapja a jelenlegi timestamp-et, ami jó esetben false-t ad vissza, azonban bizonyos esetekben nem false-t, hanem egy teljesen blőd időbélyeget kapunk eredményként, jól megzavarva ezzel a metódust, ami végül visszaadná az évszámot.

Hibák minden rendszerben vannak, de itt jön be az, hogy nem látom, miért jó egy újabb szintaktikát megtanulni, egy újabb réteggel bonyolítani a kódot, egy újabb, ilyen és ehhez hasonló hibalehetőségeket magában rejtő egységet bevonni a rendszerbe. A PHP önmagában kiválóan alkalmas sablonnyelvnek, a legtöbb szájtbilder ismeri annyira a szintaktikáját, hogy nem retten meg és az, hogy a view-ba így legalább nem lehet kódot rakni (pedig de) egyáltalán nem jó magyarázat.

Írtam már sajátot, volt már Smarty, illetve Twig is, és habár utóbbi nagyon bejött, sosem láttam értelmét ilyen komponenseknek.

Kommentek RSS ikon
A bejegyzéshez érkezett kommentek, amiket RSS csatornán is követhetsz.
AAahahahhhahhhh… Amikor kijelentettem, hogy a Smarty szerintem szimlpán fasság, ugyanarra megoldás, amire eredetileg a PHP-t szánják, mindenki kiröhögött. :D

Másrészt ami nem tetszik még benne, hogy sokan emiatt jó eséllyel összemossák a megjelenítés logikáját magával a HTML kóddal, ami nagyon nem ugyanaz.

Na és igen: +1 nyelv, +1 szintaktikával +1 hibalehetőséggel +1 hiányossággal. Próbáltál már class constant-ra egyenlőséget vizsgálni smartyban? :)
Tényleg Mefi, meg lehet valahol nézni a v3-as blogmotort? Mármint valamikor írtad, hogy van egy béta-felülete, ami tesztelhető, vagy mi… Most már nagyon furdalja az oldalamat a kíváncsiság :)
saxus: én smarty-ban lehetőleg semmit nem próbálgatok :D

dadikovi: szerintem pár hét múlva lesz publikus béta :)
Mefi: Igen, a probléma nálam is a „lehetőleg”-gel van. :D
Pontosítanék: ez a Smarty csak arra nem jó, amire kitalálták.
Új komment

Itt az adott bejegyzésben elhangzottakhoz szólhatsz hozzá. Ha primitív, csúnya, vagy bunkó erkölcsről teszel tanúbizonyságot, tuti, hogy kimoderállak és rosszat mondok rólad. A hozzászólás nem kötelező, amit írsz vállald föl!

Ezeket az adatokat - ha a böngésződ kezeli a kukikat - csak egyszer kell megadnod, később módosíthatod.

Ha van gravatarod - és a gravataros e-mail-címeddel kommentálsz -, akkor az megjelenik. Ha nincs, vagy nem tudod miaz, akkor olvasd el az útmutatót és regisztrálj.

Neved: E-mail címed (nem jelenik meg): Webszájtod (ha van): Kommented: Mennyi három és egy összege?
Ez védelmi célokat szolgál, szimplán írd be a fenti összeadás összegét!

A kommentedet írhatod nagyobb mezőbe vagy akár formázhatod is, de ha nem szalonképes, akkor moderálom!

Ajánló
Ebben a témában, esetleg ezen a napon voltak még ilyenek is:

Kockabringa (2006. június 13., 02:50:14)
OS X Lion (2011. július 20., 10:03:06)
Almánia (2007. december 05., 08:38:09)

Érdekességek
Száraz számok, pusztán csak tények:

Ez a bejegyzés 316 napja született, 419 szóból, és 2107 karakterből áll. Ajánlhatod bizonyos linkgyűjtő oldalaknak: