Archive for the 'HTML' Category

Smarty? To przeżytek.

Kiedyś bardzo chciałem poznać Smarty. Niestety nigdy jakoś nie miałem na wcześniej czasu. A przynajmniej wtedy myślałem “niestety”.
Ostatnio w pracy mam właśnie możliwość zapoznania się dogłębnie ze Smarty.

Parę dni zajęło zanim się do tego przyzwyczaiłem i wtedy jeszcze myślałem że jest całkiem fajne. Jednak prawda jest taka, że Smarty jest językiem zupełnie nieprzemyślanym. Na większość konstrukcji znanych z PHP posiada własne odpowiedniki, od których z kolei są wyjątki. Poza tym ewidentnie widać, że język ten był pisany gdy PHP jeszcze było tylko strukturalne i tylko na doczepkę dodali programowanie obiektowe. Oczywiście niepełne.

By nie być takim gołosłownym, parę przykładów:

kod PHP Kod Smarty
echo count($array) {$array|@count}
if(count($array)>5) echo “dużo”; {if count($array) > 5}dużo{/if}
echo $foo->$bar()->baz(); Niemożliwe, trzeba użyć zmiennych tymczasowych
{assign var=temp value=$foo->bar()}{$temp->baz()}
$s = “element {$foo->id} z {$foo->count}”; Tak samo, jak wyżej - niemożliwe
echo substr($string, strlen($var), $end) Oczywiście wynik strlen() trzeba do zmiennej tymczasowej…

Mogę tak dalej wymieniać, ale już chyba widać sens przesłania, iż Smarty nie jest umierającym dinozaurem, który szczerze mówiąc, nie mam pojęcia czemu jest wciąż taki popularny…

Opera jest zła.

I głupia.

Oto prosty przykład. Taki sobie malutki kod:
<input type="text" name="field" value="input #1" />
<input type=”text” id=”field” name=”field” value=”input #2″ />
<input type=”button” onclick=”alert(document.getElementById(’field’).value)” value=”click me!” />

Każdy w miarę inteligenty człowiek powie, że wynikiem powinno być okienko z tekstem “input #2“. Firefox też tak powie. Ale bynajmniej nie Opera. Jej zdaniem powinno być “input #1“. W końcu czemu niby warto zwracać uwagę na atrybut id=”"?

Ten taki idiotyzm Opery właśnie mnie kosztował jakieś dwie godziny pracy i szukania błędu :-/

UPATE: No i się udało. Opera to poprawi :)