[PHP-users 9711] Re: テンプレートのどこがいいの?

php-users@php.gr.jp php-users@php.gr.jp
Wed, 04 Sep 2002 00:47:38 +0900


中野です。こんにちは。

みなさん、いろいろご意見ありがとうございます。
お目汚しだとは思いますが、
みなさんのご意見を伺った上での感想を書きます。

とりあえず、単純なデータの埋め込み、MVCの分離
ということに関しては、やっぱり「テンプレートは要らない」
と思います。データ生成と表示をわけるのに
PHPの埋め込み機能以外要らないですよね。

私は、

function showpage($param, $filename) {
  // $paramは表示に必要なデータを格納した連想記憶配列
  // キーは、変数名に使えるもののみ

  // $filenameは表示内容のhtmlテンプレート
  
  extract($param);
  include $filename;
  exit(0);
}

という形で、ページを表示しています。
extractのおかげで、連想記憶配列にアクセスするのに
いちいち<?=$param['xxx']?>としなくても
<?=$xxx?>で良いので、さっぱりします。

入れ子データの場合も、
<?php foreach ($yyy as $yy) { extract($yy); ?>
...
<?php } ?>
なんてやっちゃってます。まあ、まずめったに問題は起きません(笑)

いくつかのご意見に有ったように、データアクセス以外のコードを
勝手にテンプレートにかかれては困ると言うことは有るかもしれませんが、
「やっちゃいけないこと」は他にもいくらでも有って、
これ一つ潰したぐらいで総量はあんまり減らないんじゃないかと。

逆に、テンプレートレベルでもPHPのコードを気軽に使うのも良いでは
ないかと思ったりします。たとえば、
<HTML>
<HEAD>
<TITLE><?=$title="タイトル"?></TITLE>
</HEAD>
<BODY>
<H1><?=$title?></H1>
...
ぐらいは良いのでは無いかと。

テンプレートライブラリを通すとデバッグが大変じゃ無いかと
いうことはあります。(smartyは頑張っているみたいですが)

初期のC++のデバッグのような思いは、もう懲りごり:)

それぞれのテンプレートが持っている便利機能は、
それはそれで便利ですが、生PHPや適切な関数を作ることで解決できます。

カスタムタグまでいってしまうと、XML好きの私は
大変心惹かれることではありますが、
Jspのタグライブラリの変遷を見ていると、
逆にタグライブラリでモデル生成、表示までしてしまおうという
感じが有って、MVC的では無いのかなと思います。
Strutみたいなフレームワークが、Pearで生PHPで出てくれれば良いんですけど。