PHPのテンプレートエンジンの選択ポイント簡単解説

こんにちは!独学プログラマー&ライターのつぶらやです。

PHPの開発で、機能を記述する部分と画面の表示部分は分けて作られる事もあります。

分割する方法として

フレームワークを使用する
テンプレートエンジンを使用する
自作のテンプレートを使用する

などの方法があります。

今回はテンプレートエンジンを使用する方法と自作する方法について、以下の内容でお話したいと思います。

テンプレートエンジンとは
おすすめテンプレートエンジンと種類(サンプルコードつき)
テンプレートエンジンを自作する方法

テンプレートエンジン選びを迷っている方も是非参考にしてください。

目次

テンプレートエンジンとは

PHPの便利なツールで、機能を記述する部分と画面の表示部分を分割する事が出来ます。

使う理由

プログラマーが機能部分のファイルを作り、コーダーが画面部分を作る場合などに別ファイルで開発する事が可能です。

また、コーダーにプログラム知識がなくても実装出来るようになっているものがほとんどです。

選択時に注意する事

選択時の注意点としては、

開発環境に対応しているか
開発が止まっていないか

のような事に注意してください。

開発環境が特定のフレームワークに限られるテンプレートエンジンもあります。

また開発が止まっているものは、不具合が今後対応される可能性がない事を意味します。

※こちらで紹介するテンプレートエンジンは現時点(2018年9月)では開発は止まっていません。

使用するテンプレートエンジンを決める時には、十分注意してください。

テンプレートエンジンの種類

PHPのテンプレートエンジンには沢山の種類があります。

それぞれ特徴を見ていきましょう。

テンプレートエンジンの種類

名称フレームワーク新しさ変数の表示記述
smartyPHPならなんでもかなり昔からある{$smarty}
Twigsymfonyだが他のフレームワークでも使用可割と古い{{twig}}
Blade Laravel 結構最近{{$blade}}

他にも存在しますが、有名な3つを上げています。

フレームワークがsymfonyならtwig、フレームワークがLaravelならBladeを使用するのが良いでしょう。

サンプルコードの紹介(smarty)

ここで、テンプレートエンジンの使用をイメージしやすくするためにサンプルコードを紹介します。

今回はフレームワークに依存しないsmartyで書いたコードを掲載します。

詳しいsmartyの使用方法は公式サイトや、ネットで検索してください。

smarty_test.php
<?php
require_once 'Smarty/Smarty.class.php';
$tpl = new Smarty;
$tpl->template_dir = './templates/';
$tpl->compile_dir = './templates_c';

$tpl->assign("title", "侍エンジニア"); // tpl側の変数に値を代入

$tpl->display("smarty_test.tpl"); // 呼び出すtplを指定

?>
smarty_test.tpl
<h2>{$title}</h2>
結果
侍エンジニア

機能の記述をsmarty_test.php側で行い、表示の命令はsmarty_test.tpl側で行います。

他のテンプレートエンジンでも同じような仕組みになっています。

テンプレートエンジンを自作する方法

テンプレートエンジンを使用したくないが、機能と表示の記述を分けたい場合もあるかと思います。

そういう方には自作する方法もあります。

表示のためのHTMLのテンプレートと機能のためのPHPファイルに分けて作ります。

詳しく知りたい方は以下も参考にしてください。

まとめ

本日はPHPのテンプレートエンジンについてお話しました。

色んなテンプレートエンジンがありますので、何が違うのかをよく検討してから使用しましょう。

場合によってはテンプレートを一切使用せずにPHPファイル1つで開発した方が効率がよいという場合もあるかもしれませんね。

それでは、また。

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次