Skip to main content

Dlaczego nie używam Smarty

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

  1. Próba stworzenia języka programowania.
  2. Brak obsługi błędów.
  3. Konieczność kompilacji kodu.
  4. Brak kontroli nad wygenerowanym (skompilowanym) kodem.
  5. 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.

markac

Full-stack Web Developer

One thought to “Dlaczego nie używam Smarty”

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.