昨今のPHPのテンプレートエンジンについて調べて共通インタフェースを作った

こんにちは。
突然ですが、FuelPHPのビューを書く場合、デフォルトでは生PHP + Viewクラスの構成だと思います。
Viewクラス自体がエスケープ機構を備えているのでXSSは塞げるんですが、生のPHPで書くとisset地獄だったりifが増えたりと不便なところが多く、テンプレートエンジン使いたいと思うことが多々あります。

そんなFuelPHPにはparserというパッケージがあるので、設定を変更すればテンプレートエンジンが簡単に利用できます。

fuelphpでhaml導入したった – ド忘れ防止雑記帳

が、しかし 対応しているテンプレートエンジンの一覧を見てみると、どれも古い。とにかく古い。
良く言えば枯れてるんですが、調べてみると メンテナンスされてないだろこれ… という感じのものが結構ありました。

ということで自分の知見をアップデートするため昨今のテンプレートエンジンについて調べつつ、
parserパッケージのように複数テンプレートエンジンを同一のインタフェースで扱える仕組みを作ってみました。

採用基準

  • 開発が継続している
  • ある程度Githubのstarが集まっている
  • もしくは"大御所"と呼べるくらい広く使われて枯れている

採用したテンプレートエンジン

これらのテンプレートエンジンに対応しました。

色々と知らない名前のテンプレートエンジンが多く見つかりました。

偶然見つけたPlatesに限らず、最近ライブラリを調べているとthephpleagueというお名前のブランドをよく見かけます。
それぞれいい感じのモジュール化されていて、ドキュメントも充実しており、高品質です。

とはいえ、これといって革新的なものはなかったので、個々のテンプレートエンジンについては触れません。

採用しなかったテンプレートエンジン

  • Blade
    • Laravelのテンプレートエンジン。単体のライブラリになっていない
  • Volt
    • Phalconのテンプレートエンジン。ライブラリになっていない
  • H2O
    • メンテされていない。composerない
  • RainTPL3
    • issue溜まってる。メンテされていない
  • Razr
    • メンテされてない
  • Flow
    • 開発途中で止まってるっぽい?
  • Slade
    • 開発途中で止まっている
  • Tonic
    • 開発途中で止まっている
  • Mustache
    • 開発が止まっている

作ったライブラリ

rush/php-view-strategiesという名前で公開しています。

説明や使い方などはREADMEを御覧下さい。
記事を執筆した時点では最低限の機能しか提供していないので、ご要望やご提案などあればIssueにお願いします。