Archiwum kategorii ‘HTML’
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
Komentarze (3)
Komentarze (3)