Smarty
Laravel
blade
Smarty3

Smartyディスられっぱなしだけどそんな悪くないと思うんだけどね。

More than 1 year has passed since last update.


smartyテンプレート以外にいいじゃんと思ったのでまとめ

まず、smartyはかなり昔からあります。ナウな感じではないと思います。

ですが、ビューだけに特化して使う分には、すごい使いやすいなとここ最近になって感じています。

smartyではこれができるのにbladeだとできない…と思うときもありますし、結果的に行数もsmarty使ったほうが抑えられることもあります。

なので、皆さんが思うsmarty bladeについていろいろ聞いてみたいです。

もちろん、bladeは簡単に拡張することができるため、非常に使い勝手いいのは間違いないです。

しかし、smaryでは一行に書くことができるのに、bladeだと一行で書くことができない!という県がありまして、ずいぶん悩んだことがあります。

以下に例を示します。

{if $user.name|default:'' == 1}

<p>hoge</p>
{else}
<p>huga</p>
{/if}

smartyだと上記のように書けますが、bladeだと

@isset($user['name'])

  @if ($user['name'] == 1)
    <p>hoge</p>
  @else
    <p>huga</p>
  @endif
@endisset

または

@if ($user['name'] != null && $user['name'] == 1)

<p>hoge</p>
@else
<p>huga</p>
@endif

はい。全然いけてないですね。

データフォーマットとかなら、まぁ簡単に自作できるのでむしろbladeのほうが良かったりするかもしれませんが、ビューに特化した構文が何しろ豊富で、その点が優秀なのと、後ドットで繋げることができるのもいいですよね。laravelで関連付けしたテーブルをbladeで書くと

$user->microposts['comment']

$user['microopsts']['comment']

上記のいずれかになるんですが、smartyなら

{$user.microposts.comment}

こんな感じでメソッドチェーン式で書けるので書きやすいしわかりやすいんですよね。

そういう意味で、smartyのテンプレートエンジンも結構いいなーとは思うんですが、皆さんはどのように思っているでしょうか?

また、たいていsmartyディスっている人の多くは実はsmarty全然使ったことなくてよさがわからなかった。という可能性もあるので、改めてみていろいろ試してほしいなーって思ってる。


ちなみに

もちろんbladeもすごくいいと思っています。smartyだとビュー呼び出し決まってincludeですが、bladeだとsection使ったり、もちろんincludeも使えたり、いろんな書き方ができますよね。

ただ、どうせblade使うんだったら、パーシャル化自動認識、$userとか渡したらliの中に入れ子でパーシャル作るようにする。みたいな感じで、rails並みにいろんなことができるようになるとさらに真の力発揮するんだろうなーって思っています。

ちなみになんでこんな話をしたかというと、実は入社3か月目あたりで、ある程度phpやフレームワーク理解したところで、とあるプロジェクトをcodeigniterからlaravelに移行作業することになりまして、その移行作業の中で思った節あったためこんな記事書いてみました。

炎上ウェルカム。どしどしコメント寄せてください。