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”