PHP テンプレートに関しては、言うは易く行うは難しです。おそらくランダムで 20 個以上の選択肢があり、pear だけでも 5 つの異なるテンプレートが含まれているため、本当に頭が痛くなります。
他人の意見に従って、これは良い、あれは悪いと言うのではなく、テンプレートを選択する前に、まずそのテンプレートの本当の目的を理解したほうがよいでしょう。 簡単に言えば、テンプレートの中心的な目的はチームワークです。機能には主に 2 つの方法があります。
1. HTML と PHP を分離することで、Web デザイナーと PHP プログラマー間の協力がより快適になります。
2. 表示ロジックとトランザクション ロジックを分離することで、コア トランザクション ロジックの変更やアプリケーションの拡張がより簡単かつ柔軟になり、プログラマ間の協力がより快適になります。 (この点は、人々によって見落とされたり、誤解されたりすることがよくあります。彼らは常に、HTML から PHP を取り出すことを、表示ロジックとトランザクション ロジックの分離と呼ぶと考えています。これが事実である場合、そもそも、なぜわざわざ PHP と HTML を混合するのでしょうか?
)このテンプレートの本当の目的は、正しい選択をしやすくすることです。
あなたが唯一の PHP プログラマーであるが、他の Web デザイナーと協力する必要がある場合は、HTML と PHP を分離できるテンプレートである phplib (現在は Pear http://pear.php.net /package/HTML_Template_PHPLIBに統合されているようです) を選択してください。 ) または
FastTemplate はこのようなもので、非常にシンプルで使いやすいです。
Web サイトのインターフェイスが醜く、主にプログラマーによって完成されるが、機能がより複雑で強力な拡張機能が必要で、表示ロジックを含むさまざまなレベルを分離する必要がある場合は、特別なものを使用せず、PHP 自体が最適なテンプレートです。 。この場合、プログラムは非常に慎重に設計する必要があり、PHP と HTML ではなく、ビジネス ロジックとプレゼンテーション ロジックを分離することを常に忘れないでください。これが、私が Smarty のようなものに常に非常に抵抗してきた理由です。Smarty の構文はあまりにも複雑かつ強力で、ほとんどスクリプト言語を再発明したようなものだからです (PHP プログラマーでさえも学び直す必要があります)。さらに不可解なのは、このスクリプトが強力であればあるほど、ビジネス ロジックとプレゼンテーション ロジックを簡単に混合して、テンプレートの本来の意図を破壊してしまうことです。
HTML と PHP を分離して、より優れたビジュアル デザインを実現したいが、システム全体に、複雑な構文を学習することなく html、xml、および wml のさまざまなインターフェイスに適応できる非常に強力な拡張機能を持たせながら、より高度な機能を提供したい場合。運用効率のレベルを考慮すると、これは非常に難しい問題です。悪いニュースは、そのような要件を実際に満たすことができる成熟したテンプレートが現在存在しないことです。良いニュースは、Zope または ColdFusion を試してみると、このテンプレートの影が見つかるでしょう。
(wact http://wact.sourceforge.net/と phptal http://phptal.sourceforge.net/はこの方向で開発中であり、非常に有望であるはずです)。
テンプレートとデータを組み合わせる (テンプレート呼び出し) には、主にプッシュ メソッドとプル メソッドの 2 つの方法があります。
プッシュの方法は、PHP を使用してデータをテンプレートにプッシュすることです。つまり、プログラマはテンプレート内の各変数に明示的に値を割り当て、それらを結び付ける必要があります。
プル方法は、php と html を混合するようなもので、テンプレート内の変数がデータをアクティブにプルします。
テンプレートと言えば、他にもphphtmllib と Quickform ( http://pear.php.net/package/HTML_QuickForm ) の
2 つについて言及する必要があります
。これら 2 つは、さまざまなページ コンポーネントを通じて HTML を完成させる従来の方法を使用します。おそらく、従来の GUI デスクトップ プログラムを作成した多くのプログラマは、この方法を好むでしょう。
より美しいソリューション
商用ソフトウェアを作成している場合、Flash はより美しいソリューションであるはずです (誤解しないでください。PHP が ming をサポートし、swf ライブラリが Flash を動的に生成できることを知っているからといって、それだけではありません)について話しています。) 言いたいこと Flash Remoting をサポートするソリューションです。このようなものは、PHP と Flash の本当に意味のある組み合わせです。ビジュアルデザイナーがフラッシュ部分を完成させ、PHPプログラマーがフラッシュリモートを通じてフラッシュでできたクライアントにデータを送信します。
現在、2 つのソリューションがあります。
AMFPHP
Macromedia Flash Remoting はデータ送信時に独自のより効率的なデータ形式を使用するため、AMFPHP はデータ形式を分析してサーバー側で対応するデータ形式を構築します。これらのデータを受信、解析、エンコードして情報を交換する機能を実現するクラスです (Samba と同様、一種のハッキングのはずです)。
PHPObject
http://ghostwire.com/resources/phpobject/
PHPObject は、別の方法を使用して、フラッシュにいくつかのアクションスクリプト コンポーネントを埋め込むことにより、オープン フォーマット SOAP を通じてデータを送信します。
実際には、PHP テンプレートに関連する問題は他にもたくさんあるので、しばらくの間は書ける量が限られています。