ゲーム・論考PHPはもともとがテンプレートエンジンみたいなモノで、別にわざわざテンプレートエンジンを使う必要なんかない気もする。使うと便利なときもある(かえって不便なときもある)。テンプレートエンジンに必要な機能ってなんだろう。変数をアサインするテンプレートファイルを読み込んで表示するテンプレート中で、アサインした変数を(簡単に)呼び出せるif文とfor文まあそういうことだよな。テンプレートエンジンを使わない場合、単純なincludeとかでテンプレートファイルを呼び出せばいい。テンプレートを分けないよりは何千倍もいい。PHPそのものなら、if文でもなんでもつかえる。テンプレートエンジンの機能はすでに実現されているわけで、つまりincludeがあればテンプレートエンジンは必要ないんである。テンプレートエンジン記法のほうが読みやすい、PHPネイティブだとif文の{}とかがすごく見づらい、という意見もあるかもしれない。これには解決法があって。?>こう書きかえれば、だいぶ読みやすくなる。じっさい、このためにこんな記法が残ってる。こんなのでも、JSPのうんたらタグとかよりは書きやすい気がするし(わたしが慣れてないだけ)。いうか、テンプレートエンジンごとの独自記法なんていちいち憶えられないし、これでいいような気もする。この方法だと、グローバル変数を使うことになってしまうんである。グローバル変数はもちろん大問題だ(世界中のすべての人にこう思ってほしい......)。テンプレートエンジンを使う場合と使わない場合、なにが違うかといえばこれだ。表示用変数の名前を制限するとか、コーディング規約的なやりかたで縛るという方法はあるだろう。規約を守る体制があるなら、それでもいいだろう。規約は守られないので、なにか強制力のある仕組みが必要なのである。いうわけで、PHPのテンプレートエンジンに必要な機能があるとすれば。「グローバルでない、表示専用のスコープを提供すること」なんじゃないか。いったことをふまえて、ネイティブPHPの機能を最大限に活用したテンプレートエンジンを書いてみよう......。'piyo';$template->show('foo.tpl.php');これでも、なんかそれっぽい書きかたにはなる。(PHPは、定義していないpublic変数を外から作られても文句をいわない)うーん、ほんとにこれでいいなあ......。余計なことしないし、パフォーマンスの問題もないし、なにより学習の必要がない。いう人がいてもいいと思う。01:51よくきく「PHPなんてただのテンプレートエンジンで、言語じゃない」っていうのはぜったい信じちゃダメと思う。そんなこといってる人は本物の技術を知らないと思う。上のはそういう意味じゃないです。PHP最小のテンプレートエンジンを。