Twig
PHP用テンプレートエンジン。
PHPテンプレートエンジンを使おう Twig編 | AkisiのWEB制作日記
以下、個人的な評価点。
- 可読性がよい
- 生PHPの
echo
でHTMLを出力するのは見にくい - Twigは、出力内容を記述するファイル(テンプレート)と、ロジックを記述するファイルに分け、読みやすい構成にしやすい
- HTMLとして出力されないコメントが書き込める
- テンプレートの再利用性
- テンプレートを継承や埋め込みでき、変数の受け渡しも柔軟に行えるため、部品として再利用しやすい
- 保守性
- CakePHPやLaravelなどの全体を覆うフレームワークは、開発が停滞すると新機能やセキュリティの面で不足
- Twigは表示だけを担うので最悪取り替えがきく
- 学習コスト
- フレームワークは各々の流儀を覚えるコストが高く、少し外れたことをしたいと思うと途端に面倒になる
- Twigは表示に特化しているのですぐ使え、拡張もまずまずしやすい
- ただし、日本語の資料は少ない
インストール
PHP 7.x を使うならTwig 2.xが使える。まだPHP 5.x を使っているならTwig 1.xを選択する。
Composerで提供されているので素直にそちらを使う。
> composer require "twig/twig:^2.0"
使い方
まず必要なファイルは、以下の2つである。
- テンプレートファイル(拡張子は何でも良いが、わかりやすく.twigとする)
- テンプレートへ埋め込む変数を指定し、レンダリングを実行するPHPファイル
MVCモデルのVとMCを適度にゆるい感じで分離できるが、ガチガチでは無く、必要ならVにちょっとしたロジックは書けるので柔軟。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
< html > < head ></ head > < body > {# コメント: nameという変数の値を描画 #} {{ name }}< br > {# コメント: listという配列変数の中身を順に描画 #} {% for item in list %} {{ item }}< br > {% endfor %} </ body > </ html > |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php require_once '/path/to/vendor/autoload.php' ; // テンプレートのパス設定 $loader = new Twig_Loader_Filesystem( '/path/to/templates' ); $twig = new Twig_Environment( $loader , [ 'cache' => '/path/to/compilation_cache' ]); // 埋め込む変数 $values = [ 'name' => 'Taro' , 'list' => [ 'zero' , 'one' , 'two' , 'three' ], ]; // レンダリング echo $twig ->render( 'index.twig' , $values ); |
- 結果
Taro zero one two three