こんばんは、Webプログラマの篠田です。
もう7月ですね。京都生まれ京都育ちの私にとっては祇園祭の季節でもあります。
今年は17日(日)が山鉾巡行なので、宵山は16日なので時間があれば行きたいですね。
さて、前回(私の回の)予告をしていたとおり本日は「twig30分クッキング(?)」と題しましてPHPテンプレートエンジンの1つである「twig(トゥイグ)」のインストールと簡単な使い方をご紹介していきたいとおもいます。
composerをインストールする
早速、twigと関係のなさそうなものをインストールさせようとしていますが、この「composer(コンポーザー)」というのがインストールしようとするライブラリの依存関係を管理してくれるツールになります。
今回はtwigのみなのでtwig公式サイトから直接「.tgz」ファイルをダウンロードして展開するという方法もできなくもないのですが、PHPで使うライブラリ同士の依存関係を意識しながらファイルを用意するというのは手間になります。
そこで、「『twig』をインストールしたいんだけど関係するライブラリがあれば一緒にインストールしてね」というざっくりインストールができるようにするのが「composer」というツールなのです。
「composer」を使うことでの利便性として「autoload(オートロード)」と呼ばれる依存関係があるクラスを一括してincludeしてくれるプログラムを利用することができる点です。
簡単に「autoload」を説明すると「いろいろなクラスを利用したいけど、どのファイルをincludeしないといけないかを気にしなくてもクラスを使えるようにする便利なプログラム」というざっくり理解で良いかと思います。
※詳しい話は別途したいと思います。
では、今回は「composer」を使って「twig」をインストールしたいと思うので先に「composer」をインストールしたいと思います。
まずは、PHPのプログラムを保存する場所を作り、そこに「composer」をインストールしたいと思います。
「xampp」を使っている場合は「htdocs」ディレクトリ直下に「develop」ディレクトリを作成しましょう。
※「develop」ディレクトリはあくまでも仮なので自由に書き換えて下さい。
作成したら「develop」ディレクトリ内に移動します。
1 2 |
$ mkdir develop $ cd develop |
では、「develop」ディレクトリ内に「composer」をインストールしましょう。
下記のようなコマンドを実行します。
1 |
$ curl -s http://getcomposer.org/installer | php |
上記を実行すると下記のようなメッセージが表示されてインストール完了です。
1 2 3 4 5 |
All settings correct for using Composer Downloading 1.1.3... Composer successfully installed to: [developがあるフォルダまでのパス]/develop/composer.phar Use it: php composer.phar |
「1.1.3」というのは「2016.07.01時点」での最新の「composer」のバージョンになります。
「develop」ディレクトリ内に「composer.phar」というファイルができていれば問題ありません。
twigをインストールする
今回は「twig」のみをインストールするので下記のコマンドを「composer.phar」がある階層で実行します。
1 |
$ php composer.phar require twig/twig:1.* |
「composer」でのインストールはそこそこ時間がかかりますのでのんびり待ちましょう。
放っておくと下記のようなメッセージが表示されてインストール完了です。
1 2 3 4 5 6 7 8 9 |
./composer.json has been created Loading composer repositories with package information Updating dependencies (including require-dev) - Installing twig/twig (v1.24.1) Downloading: 100% Writing lock file Generating autoload files |
「2016.07.01時点」での「twig」の最新版は「1.24.1」です。
これでtwigを使う準備ができました。
気になるファイルが勝手に作成されている
先程まで空だった「develop」ディレクトリの中が賑やかになってきました。
特に「composer.phar」を使って「twig」をインストールした時に下記のファイルが作られています。
・composer.json
・composer.lock
・vendorディレクトリ
composer.jsonとは
これは「composer」を使ってインストールするライブラリを定義しているファイルです。
今回であれば「twig/twig:1.*」というのが書かれており、twigの「1.*系の最新版」をインストールするという設定が書かれています。
必要に応じて追加したいライブラリ情報を「composer.json」に追記して再度「composer」を利用することで新しいライブラリを追加することができます。
これを見れば、だいたいどのようなライブラリが使われているのかが分かります。
composer.lockとは
これは先程「composer.json」でインストールされたファイルのバージョン情報が書かれています。
「composer.json」があるとこの内容を優先して「composer」が動くので最新のバージョンにはバージョンアップをしてくれません。
チーム間でインストールしているライブラリのバージョンを統一化するときは「composer.lock」を使ってインストールします。
ライブラリのバージョンをアップさせたい場合は「composer.lock」を削除して「composer」を実行することでライブラリが最新版にアップデートされます。
vendorディレクトリとは
「composer」でインストールしたライブラリが保存されているディレクトリになります。
ポイントは、この中にある「autoload.php」をインクルードすれば「vendor」ディレクトリに保存されているライブラリを一括で利用することができるという点です。
とりあえずtwigを使ってみる
やっと準備も整いましたのでPHPからtwigを使ってメッセージを表示してみたいと思います。
1 2 3 4 5 6 7 |
<?php require_once './vendor/autoload.php'; $loader = new Twig_Loader_String(); $twig = new Twig_Environment($loader); echo $twig->render('Hello {{ message }}!', array('message' => 'twig World')); |
まずは、「require_once ‘./vendor/autoload.php’;」でvendor内にインストールされているライブラリを読み込みます。
なので、わざわざ「twig」をincludeする必要はありません。
次に「Twig_Loader_String」と「Twig_Environment」のクラスを読み込みtwig本体を呼び出します。
最後に「render」メソッドの第1引数に表示したい文字列と「{{ message }}」で置き換える変数を用意し、第2引数に「{{ message }}」の中身となる連想配列を用意します。
これを実行すればブラウザ上に「Hello twig World!」と表示されます。
まとめ
「なんだかテンプレートを作った気がしない」と思っている人も多いかと思いますがこれがtwigの超基礎的な使い方になります。
次回は具体的なtwig内での処理の使い方やテンプレートらしい使い方をご紹介できればなと思います。