Smartyについて質問です。
PHP5のフレームワークでZendやSymfonyでは、
テンプレートエンジンのSmartyが組み込まれていない(組み込みにくい)感じです。
なぜ、PHP5のフレームワークからSmartyが採用されなくなり、
ViewにPHPを直接使うようになったのでしょうか?
HTMLコーダさんやデザイナーさんに
PHPを直接扱ってもらうには、危険なのと拒絶されたりするので、
テンプレートエンジンを使ってもらいたいのですが。。。
世界中で同じ悩み抱えている人いっぱいいるはずなのに~と思ったりしています。
自分は聞きかじりレベルなので回答にならないかもしれませんが、
Smarty入門~PHP5+テンプレート・エンジンでつくるMVCアプリケーション~ 山田 祥寛 (単行本 - 2005/3/15
と言う本があるので普通に使えるのでは、ただPHP4からPHP5からはスクリプトエンジンがバージョンアップした関係上、古いスクリプトエンジン対応では使いにくいのかもしれませんね。
デフォルトではZend Frameworkやsymfonyに組み込まれていないですが,Zend FrameworkではSmartyを利用できるようにするラッパスクリプトがオフィシャルのドキュメンテーションに書かれています(下記URL,ただし使ったことはありません)し,symfonyでもsfSmartyViewPluginというプラグインをsymfonyを使ったプロジェクトにインストールすればsmartyが簡単に使えます。
僕自身は今symfony+sfSmartyViewPluginで開発を行っていますが,プラグインのインストール~Smartyの利用まで導入がとてもスムーズに行えたので感激しました。
ありがとうございます。
「View用のエンジンが増えたから、自分で好きなの組み込んでね。標準ではつけていないから、PHPで直接はき出してね。」
というスタンスなのかもしれないですね。
ひとつは現在のデザインはほぼCSS上で行えるということ。
デザイナーはほとんどCSSで作業し、たまにタグにIDやclassを追加する程度です。PHPをいじくることなんてありません。
HTMLコーディングも開発者がやったほうが手っ取り早いので、HTMLコーダは必要ありません。
仮にデザイナーがテンプレート内のロジックをいじる必要が出る場合、Smartyのようなマイナーなものを覚えさせるよりは、
PHPを覚えてもらったほうが双方とも得だと思いますよ。
Smartyでも十分危険なコードはかけますので、PHPだから危険というのもあまり理由にはなりません。
>世界中で同じ悩み抱えている人いっぱいいるはずなのに~と思ったりしています。
どちらかというと、なんでもSmartyを突っ込みたがるのは日本人特有で、世界中ではありません。
やっぱりXoopsの影響が大きいのではないでしょうか。
> Smartyでも十分危険なコードはかけます
でも、制御することも可能なんですよね。(というか、それがすごく便利です)
PHP直だと、「俺、HTMLコーダだけど、PHPも使えるぜ!PGに依頼せずに、自分で解決しておいてあげよう」
なんて、お節介な事されて、致命的なバグが発生したりするので、
別にSmartyに固執しなくてもいいのですが、HTMLコーダさんが勝手なことしないように制限かけて起きたいってのが
本音なんです。
> Smartyを突っ込みたがるのは日本人特有で、世界中ではありません。
この質問をしたあと、自分でも調べたんですが、
意外と日本ほど、世界では使われていないみたいですね。
仲の良い海外の開発者に相談してみたのですが、
「日本人は、セパレートするのが好きだな。
それぞれが職人で、自分たちの仕事に手を出すなって感じに聞こえるよ。
だから、日本人は、ソース書くの遅いんだよ」
と笑われました。(悪気はなさそうな感じです)
いや、それが、職人国家日本っぽくて、個人的には好きなんですけどね~
Smartyとフレームワークは独立しているから、
フレームワークの中で「Smartyの組み込み方」などは
説明されていないだけではないですか。
以下の書籍の中ではZend FrameworkからSmartyを組み込む
例について書かれています。
ありがとうございます。
別方向の解答を試みてみます。
LL言語のフレームワークで最近でたものは多かれ少なかれRuby on Railsの影響を受けているからかもしれませんね。
http://jp.rubyist.net/magazine/?0004-RubyOnRails
http://jp.rubyist.net/magazine/?0017-BundledLibraries
というのはRuby on RailsではerbといってHTMLに直接Rubyコードを埋め込んでビューを作るからです。最初は乱暴に感じますが小規模な開発であれば、これで十分だと思えます。またビュー専用の共通コンポーネントを書いておく場所もRailsは用意してくれていますので、(それ専用のクラスを殻だけ用意してくれる)ごちゃごちゃとビューにコードが入るのを避けることも出来ます。
なぜそういう方向なのかなと、個人的に考えると以下の理由があるのかなと思います。
本当だったら純粋なHTMLのみでテンプレートを書ければいいのですが、なぜかメジャーになりきれてないのが悲しいですね。WicketやAmritaなどなど
ありがとうございます。
う~ん、ちょっと質問の意図とずれている感じです。