素の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()
がどんな処理を行なっているのか理解できていないので、ソースコードを読んでみようと思います。そして、様々な機能があるみたいなので、これらも使ってみたいと思います。
ではまた。