[[Twig]]

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
programming/php/library/twig.txt · 最終更新: 2018/05/01 by ikatakos
CC Attribution 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0