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

