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.

« »

mefiblog logó

Írja és rendezi Mefi, avagy Nádai Gábor © 2005-2024

A blogot büszkén pörgeti a WordPress motorja, Anders Norén sablonjának átbuherált változatával.