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にちょっとしたロジックは書けるので柔軟。
<html> <head></head> <body> {# コメント: nameという変数の値を描画 #} {{ name }}<br> {# コメント: listという配列変数の中身を順に描画 #} {% for item in list %} {{ item }}<br> {% endfor %} </body> </html>
<?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