ビジネスとIT活用に役立つブログBlog


CodeIgniter3にTwigを連携して使う

この記事をシェアする:
アーティスではシステム開発にPHPのフレームワークであるCodeIgniterを使うことがあります。
また、PHPのテンプレートエンジンであるTwigを導入することもあります。今回はこの2つを連携して使っていきたいと思います。

本記事での筆者の環境

  • PHP 5.6.40
  • CodeIgniter 3.1.11
  • Twig 1.42.5

使ったことがない方のために少しだけご紹介

CodeIgniter
https://codeigniter.com/

  • MVCアーキテクチャを推奨しているPHPフレームワークです。
    CodeIgniter encourages MVC, but does not force it on you. 
  • Documentが日本語対応しています。
Twig
https://twig.symfony.com/

  • PHPのテンプレートエンジンです。
    Twig is a modern template engine for PHP

このコードを

この様に書くことができるので書きやすさが違うのがわかるかと思います。

連携する

テスト用にまず下記機能のフォームを作りました。
まだTwigは導入していないのでviewは素のPHPで書いています。

  • 名前を入力してpostすると返答が表示される
  • 空欄のままpostするとエラーを表示する

Twigをcomposerでインストール

CodeIgniterのapplicationディレクトリ内にcomposerでTwigをインストールします。
applicationディレクトリ内にcomposer.jsonファイルを設置します。

 composer install コマンドでインストールします。

CodeIgniterの設定

 config/config.php でComposer auto-loadingを TRUE にします。

CodeIgniterにTwigライブラリを作成

 controllers/Test.php に直接Twigの読み込みを記載してもよいのですが、使い回しできるようにライブラリを作成します。

Twigライブラリを読み込んで使う

 controllers/Test.php でTwigライブラリを読み込んで使います。

 views/test.php の変数部分をTwigの記法に変更した  views/test.html.twig ファイルを作成します。

動作確認

以上でCodeIgniterとTwigを連携して使うことができました。
viewファイルが素のPHPよりスッキリして見通しも良いかと思います。

おまけ:PHP5.6環境でTwig1系の最新を指定していたら急にエラーが出るようになった話

本記事ではcomposer.jsonのTwigのバージョンを 1.42.5 に明示的に指定していますが、過去の案件では1系の最新バージョンをインストールするように指定していました。

2020/7/8に新たにCodeIgniterとTwigを使用してプロジェクトを作成しようとした際に画像のようなエラーが表示されました。

直近の案件の同構成プロジェクトのcomposer.jsonやCodeIgniter内のコードを確認しましたが、差分がなかったのでエラーの箇所を確認することに。

 ?AbstractExpression この変数にPHP7.1で実装されたnull許容型宣言が使用されていたのでcomposerのサイトを確認。

2020年7月5日に v1.43.0 がリリースされ、PHPの下限バージョンが 7.1.3 に上がっていました。

また、筆者はPHP7.4環境にDockerでPHP5.6環境を構築し開発しており、HOST側でcomposer installを実行してしまったため、 v1.43.0 がインストールされてしまいました。

対応策

  • composer.jsonでTwigのバージョンを明示的に指定する
  • PHP5.6環境でcomposer installを実行する
  • プラットフォームで使用するPHPのバージョンを明示的に指定する
外部のパッケージを使う際、何も考えず過去プロジェクトの設定ファイルを参照すると思わぬ落とし穴があるなと学びました。。

さいごに

今回はCodeIgniter3とTwigを連携して使う方法を、簡単なフォームを作りながらご紹介しました。

素のPHPで書くより感覚的に書くことができるので、効率も上がるのでは無いかと思います。 ぜひ、CodeIgniterとTwigを使ってアプリケーションを開発してみてください。

Twig v1.xのドキュメントはこちら


この記事のカテゴリ:

SNSで最新の情報を
受け取ることができます!