Smarty – system szablonów napisany w PHP, służący do odseparowania logiki aplikacji od warstwy prezentacyjnej.
Trzeba tutaj zaznaczyć, że już powyższy krótki wstęp jest praktycznie niespełniony w dużej części aplikacji wśród programistów używających Smarty jak i PHP.
Dlaczego Smarty jest złe?
Najważniejszym dla mnie powodem jest chęć zaimplementowania przez twórców Smarty całej funkcjonalności PHP i przetłumaczenia jej na język Smarty…
Ten wyścig z góry skazany jest na niepowodzenie.
Jest to próba (niestety udana) stworzenia dodatkowego języka programowania i kolejnej niepotrzebnej warstwy abstrakcji dla systemu, który został napisany tylko i wyłącznie dla PHP!
Smarty nie oferuje niczego, czego nie oferowałby PHP.
Wady Smarty
- Próba stworzenia języka programowania.
- Brak obsługi błędów.
- Konieczność kompilacji kodu.
- Brak kontroli nad wygenerowanym (skompilowanym) kodem.
- Kopiowanie struktur kontrolnych i funkcji z PHP.
Zalety Smarty
Warto wspomnieć o obsłudze Cache – nie mylić z kompilacją do kodu PHP.
Zalet PHP nie przytoczę, ponieważ wszystkie wady Smarty można uznać za zalety PHP.
Przytoczę za to kilka przykładów napisanych (to jest dobre określenie) w języku Smarty i ich odpowiedniki w PHP.
Smarty |
PHP |
{php} ... {/php} |
<?php ... ?> |
{$var} |
<?php echo $var; ?> |
$this->assign('foo', 'bar'); |
<?php $foo = 'bar'; ?> |
{foreach from=$myArray key=k item=v} {$k}: {$v} {/foreach} |
<?php foreach($myArray as $k => $v): echo "$k: $v"; endforeach; ?> |
{include file=$file} |
<?php include $file; ?> |
{$articleTitle|upper} |
<?php echo strtoupper($articleTitle); ?> |
Budowa modyfikatorów (pluginów) w dużej mierze ogranicza się tylko do zmiany nazwy oryginalnej funkcji PHP.
Np. funkcja strtoupper() w Smarty wygląda tak:
function smarty_modifier_upper($string) { return strtoupper($string); }
Jak widzicie, jest to zwykły Wrapper, którego jedynym celem jest wywołanie oryginalnej funkcji PHP.
Warto wspomnieć, że PHP posiada możliwość używania skróconych znaczników np.
<?= $var; ?>
zamiast:
<?php echo $var; ?>
Opcja pierwsza wymaga włączonej opcji
short_open_tag
.
Ze względu na różnice w konfiguracji PHP po stronie serwera, zawsze bezpieczniej jest stosować standardową (pełną) wersję znacznika otwierającego.
One thought to “Dlaczego nie używam Smarty”