Blogaomu

WEBアプリケーション開発とその周辺のメモをゆるふわに書いていきます。

Twigを使ってみました

素のPHPはもはやテンプレートエンジンとしては使えない – ぱせらんメモを読んで、PHPのテンプレートエンジンに興味が湧きました。そこでイケてそうなPHPテンプレートエンジンのTwigを触ってみることにしました。とりあえず、Hello, worldが出力される程度まで触ってます。全編的にTwigのドキュメントウノウラボ by Zynga Japan: PHPテンプレートエンジンTwigをいじってみましたを参考にしています。

環境

Twigのインストール

ドキュメントを見るとインストールの方法は何種類かあるようです。今回は、Composerを使ってインストールしました。

% cd path/to/project
% curl -s http://getcomposer.org/installer | php

プロジェクトルートにcomposer.jsonファイルを作成します。

{
  "require": {
    "twig/twig": "1.*"
  }
}

Composerでインストールします。

% php composer.phar install

テンプレートの作成

今回はtemplatesというディレクトリを作成し、その中にindex.htmlをテンプレートとして作成します。テンプレート中の{{ msg }}の部分を動的に出力します。

templates/index.html

<!DOCTYPE html>
<html>
    <head>
        <title>Twig test page</title>
    </head>
    <body>
        <h1>Twig test page</h1>
        {{ msg }}
    </body>
</html>

テンプレートを呼び出すコード

次に、テンプレート呼び出し側のコードを書いていきます。

index.php

<?php
require_once __DIR__ . "/vendor/autoload.php";

Twig_Autoloader::register();

$loader = new Twig_Loader_Filesystem(__DIR__ . "/templates");
$twig = new Twig_Environment($loader);
$template = $twig->loadTemplate("index.html");
echo $template->render(array("msg" => "Hello, world!"));

まず、Twig_Loader_Filesystemクラスのインスタンス(environmentと呼ばれる)を生成します。テンプレートの格納ディレクトリを指定します。次にTwig_Environmentクラスのインスタンスを生成します。引数にはloader、オプションが入ります(今回はloaderのみ)。loadTemplateメソッドでテンプレートを読み込みます。最後に、renderメソッドでテンプレートのレンダリングを行います。

実行すると、以下のように出力されます。{{ msg }}の部分がHello, world!と表示されました。

<!DOCTYPE html>
<html>
    <head>
        <title>Twig test page</title>
    </head>
    <body>
        <h1>Twig test page</h1>
        Hello, world!
    </body>
</html>

今回は、Twigの導入部を触ってみました。Twig_Autoloader::register()がどんな処理を行なっているのか理解できていないので、ソースコードを読んでみようと思います。そして、様々な機能があるみたいなので、これらも使ってみたいと思います。

ではまた。