Twig を使い始める最初の一歩

今回も軽めの記事で、PHP の仕組みでテンプレートエンジン Twig を採用することになったけど、サーバ(あるいはプロダクト)にインストール・セッティングするところから始めないといけません>< っていう感じのケース向けに最初の一歩をまとめておこうという感じです。対象サーバは Linux ってことにしておきます。

Comporser のインストール

Twig のコードは github にあるので、そこからダウンロードして任意のフォルダに設置しても、git clone しても良いのですが、今回は Comporser からインストールすることにしてみます。ちなみに PHP は既にインストールされてるものとしておいてください。

Composer も github にありますし、Download Composer からもダウンロードできますが、コマンドラインから

curl -sS https://getcomposer.org/installer | php

とか

php -r "readfile('https://getcomposer.org/installer');" | php

とかから composer.phar ファイルを取得できます。で、この composer.phar を Path の通る任意のフォルダへ置いときます。今回は /usr/local/bin に置くことにします。

mv composer.phar /usr/local/bin/composer

/usr/local/bin へファイル設置をするには、一般的には管理者権限が必要になるかと思うので、必要に応じて sudo とか root 権限を利用ください。

composer --version
Composer version 1.5.2 2017-09-11 16:59:25

とバージョン番号が返ってきたらひとまず安心です。なお、How do I install untrusted packages safely? Is it safe to run Composer as superuser or root? – Composer で強調されているように、composer コマンドは root では使わないようにとのことです。

Twig のインストール

Composer 経由も git cloneもオフィシャルの Installation で紹介されているのですが、今回は Composer 経由の方のみを取り上げますね。

composer require twig/twig:~2.0

~ ってなんじゃい?」ってのは Composer ドキュメント日本語訳 の「パッケージバージョン」を参照してみると良いかもです。上のサンプルだと「2.0以上でそのマイナーバージョンの中で最新」ってことになりますね。話を戻して、コマンドを実行すると実行したフォルダ上に

├ vendor
├ composer.json
└ composer.lock

が作成されます。この内 vendor はフォルダで、この中に Twig とそれが依存するモジュール群がインストールされます。Composer 経由のインストールはこの依存モジュールを解決してインストールしてくれる点で便利です。

Twig の基本的な使い方

プロダクト内で Twig を呼出す方法はいくつかあるのですが、ロジックとテンプレートが別ファイルになっている基本的なケースだと、こんな感じで使います。

<?php
require_once '/path/to/vendor/autoload.php';

$loader = new Twig_Loader_Filesystem('/templates/path/to/directory');
$twig = new Twig_Environment($loader);

$name = $_GET['username'] ? $_GET['username'] : 'everyone';

echo $twig->render('template_file_name.php', array(
    'name' => $name,
) );

まずは、Twig をインストールした際に作成された vendor フォルダ直下にある autoload.php を requre します。

$loader = new Twig_Loader_Filesystem('/templates/path/to/directory');
$twig = new Twig_Environment($loader);

続いて、この2行で Twig を利用するためのオブジェクトを作成します。テンプレートファイルを別途用意する場合は、 Twig_Loader_Filesystem を利用します。引数になっている /templates/path/to/directory はテンプレートファイルが置かれているフォルダを指定します。

ここまで準備が終わると最後、$twig->render() する際に

echo $twig->render('template_file_name.php', array(
    'name' => $name,
) );

のように、第1引数には利用するテンプレートのファイル名だけで善きに計らってもらえます。

/templates/path/to/directory/'template_file_name.php(上のサンプルのテンプレートファイル)の内容が例えば、

<h1>Hello, {{name}}</h1>

だとすると、{{name}}の部分が、$name の値に置き換わります。

Twig はこれまでは飽くまでも導入でここから先が本番になるのですが、既に認知されたテンプレートエンジンでもあり、Twig でできることや取り上げた記事も多いので、そっから先は公式の情報や先行する記事などで調べてみてください、ってことで締めくくっちゃいますね。