先日、PHPでTwigを使ったときにハマったのでメモ。

まずは、Twigのインストール手順から使用方法までの流れを簡単に説明する。

はじめに、composerでTwigをインストールする。

composer require twig/twig

次に、下記のコードでTwigを利用したページの表示を試みる。
Twigファイルは、templatesディレクトリ内にindex.twigとして用意している。

<?php
require 'vendor/autoload.php';

// Twigテンプレートディレクトリ指定
$loader = new Twig_Loader_Filesystem(__DIR__.'/templates');

// Twigインスタンス化
$twig = new Twig_Environment($loader);

echo $twig->render('index.twig');

ここまでが、Webの記事でよくみられる使用方法だが、下記のエラーが発生した。

Twig_Loader_Filesystem not found

Twig_Loader_Filesystemクラスが存在しないとのエラーだ。

エラー解消法

先程のコードを下記のとおり修正する。

<?php
require 'vendor/autoload.php';

// Twigテンプレートディレクトリ指定
$loader = new \Twig\Loader\FilesystemLoader(__DIR__.'/templates');

// Twigインスタンス化
$twig = new \Twig\Environment($loader);

echo $twig->render('index.twig');

今回は古い記事を参考に書いたコードだったのでエラーが発生した様子。
どうやらTwigのバージョン2以降ではクラス構造が異なるようで、最後に紹介したコードに修正する必要があるようだ。