PHP を使用した MVC 開発モデルのロジック層とプレゼンテーション層にはさまざまなテンプレート エンジンから選択できますが、公式エンジン SMARTY の誕生以降、選択肢は変わりました。そのコンセプトと実装は非常に「前衛的」です。
MVC は、SmallTalk 言語の開発プロセス中に、それぞれ「モデル」、「ビュー」、「コントロール」を表す設計パターンとしてまとめられました。その目的は、大規模および中規模の異なる開発ロールがそれぞれの役割を実行できるようにすることです。サイズの高いプロジェクト。ネットワーク アプリケーションの開発では、次の図を使用して概念間の関係を表すことができます。
1996 年に中国で CGI が普及したとき、初期の WEB プログラマーはすべて HTML を独学で学びました。しかし、ネットワークの速度が段階的に増加するにつれて、ページ サイズも増加しました。元の 20 ~ 30 K から 10 倍に増加しました。 CGI プログラムを作成すると、PERL ソース コードと HTML ソース コードを分離するという緊急の要件が生じます。このように、社会の進歩は開発チーム内の分業に反映されます。アーティストとプログラマーはお互いの仕事にあまり精通していないため、協力中にコミュニケーションをとるために合意された「言語」を使用する必要があります。
この言語は私たちの母国語でも英語でもありません。この用語は「テンプレート」と呼ばれ、ロジックと表現はそれに依存しています。 HTMLとスクリプト言語の特徴を組み合わせた表現方法です。このようにして、プレゼンテーション層はロジック層で処理されたデータをユーザーが希望する形式で表示することができます。 Windows プラットフォームでの MFC 開発経験がある場合は、ドキュメント/ドキュメント テンプレート/ビューのカプセル化に精通しているはずです。これは非常に典型的な MVC の例です。 Web アプリケーションに関しては、個人的には J2EE の EJB/サーブレット/JSP が最も強力であると考えています。もちろん、シンプルで美しい Structs もあります。もう 1 つのよく知られた実装は、COM/DCOM+ASP です。この組み合わせは、我が国のほとんどの人に使用されています。
PHP スクリプトをデザインから独立させるにはどうすればよいですか?これは間違いなく、PHP メーリング リストで最もよく聞かれる質問の 1 つです。 PHP は「HTML 埋め込み言語」として宣伝されていますが、多くの PHP と HTML の混合プロジェクトを作成した後、フォームとコンテンツを分離するというアイデアを思いつきました。さらに、多くの企業では、プランナーの役割はプログラマーの役割とは別になっています。そこで、このようなテンプレート ソリューションが誕生しました...
たとえば、企業におけるアプリケーションの開発プロセスは次のとおりです。企画書を提出した後、インターフェイスデザイナー[アーティスト]がWebサイトの外観モデルを作成し、それをバックエンドプログラマーに渡します。プログラマーは PHP を使用してビジネス ロジックを実装し、外観モデルを使用して基本アーキテクチャを作成します。その後、プロジェクトはさらに改良するために HTML ページ デザイナーに戻されます。このように、プロジェクトはバックエンド プログラマとページ デザイナーの間を何度も行き来することがあります。バックエンド プログラマーは HTML タグに干渉することを好まないため、アーティストが PHP コードを混合する必要はありません。アート デザイナーは構成ファイル、ダイナミック ブロック、その他のインターフェイス部分のみが必要で、複雑な PHP コードに触れる必要はありません。 。したがって、現時点では適切なテンプレートをサポートすることが重要です。
現在存在する多くの PHP テンプレート ソリューション (PHPLIB など) を見ると、そのほとんどは、変数をテンプレートに置き換えたり、機能が制限されたダイナミック ブロックをフォーマットしたりする基本的な方法しか提供していません。しかし、私たちのニーズはこれよりもはるかに高いものです。 PHP プログラマーには HTML ページをデザインしてほしくありませんが、これは避けられません。たとえば、アーティストがダイナミック ブロック間で異なる背景色を交互に使用したい場合は、事前にプログラマーと同意する必要がある場合があります。同様に、アーティストもページ デザイン用に独自の設定ファイルを用意する必要があります。これは、変数を通じてテンプレートに取り込むこともできます。
Smarty は、PHP で書かれたテンプレート PHP テンプレート エンジンであり、現在業界で最も有名な PHP テンプレート エンジンの 1 つです。論理コードと外部コンテンツを分離し、元々 HTML コードと混在していた PHP コードを論理的に分離する、管理と使用が簡単な方法を提供します。簡単に言えば、その目的は、PHP プログラマーとアーティストを分離することです。プログラマーがプログラムの論理コンテンツを変更しても、アーティストがページを再変更しても、それは影響を与えません。プログラムのプログラム ロジック これは、複数人が参加するアプリケーションで特に重要です。
PHP の場合、初期の PHPLIB テンプレートや新星 Fast テンプレートなど、選択できるテンプレート エンジンが多数あり、いくつかのアップグレードを経て、非常に成熟し、安定しました。現在使用しているテンプレート エンジンに非常に満足している場合は、続きを読んでください。フリー ソフトウェア愛好家、または効率性と優雅さを追求する開発者として、次の SMARTY の紹介は多少興味深いものになると思います。
個人的な好みの影響を除いて、私は常に APACHE の XML エンジン Axis などの公式の標準実装を使用する傾向がありました。利点は、可能な限り最高の互換性が得られることです (たとえば、初期の MFC と Win3x の互換性は他のアプリケーション フレームワークよりも優れていました。もちろん、現在ではすべてのバージョンが非常に完成しています)。 SMARTY がリリースされる前は、PEAR の Integrated Template eXtension を使用していました。このエンジンは、PHPLIB テンプレートおよび Fast テンプレートとほぼ互換性があり、テンプレートの構文からテンプレートの処理まで、テンプレートがメモリに読み込まれ、parse() 関数が呼び出されて、プリセット タグが data に置き換えられます。
SMARTY がどのように行うかを見てみましょう。リクエストを受信した後、まず URL が初めてリクエストされたかどうかを判断し、その URL に必要なテンプレート ファイルを php スクリプトに「コンパイル」し、そうでない場合は URL のテンプレートをリダイレクトします。チェックに合格した後、再コンパイルが必要ないことを確認した後、すぐにリダイレクトできます。再コンパイル条件は、デフォルトではテンプレート ファイルが変更されています。
見覚えはありますか?そういえば──これがJSPの原理じゃないですか!確かに、この種の「コンパイル」は、PHP のような解釈されたスクリプト エンジンで使用されると信じられないほど素晴らしいように思えますが、よく考えてみると、JAVA も JVM によって解釈され、実行されるのではありませんか?これを「不可能なことは何もない、ただ想像できるだけ」といいます。
JAVA について話したので、PHP の将来について私の意見を述べさせてください。 PHP の公式 Web サイトは、バージョン PHP 5.0 が 2003 年末にリリースされると発表しました。このバージョンには、例外処理、名前空間、よりオブジェクト指向など、多くの新機能が含まれています。 JAVA に近づいていると言えます。SMARTY も新機能の 1 つであり、PHP は大規模および中規模のプロジェクトの開発により適しています。しかし、最初にそれを選んだ理由、つまり柔軟性と使いやすさからはどんどん遠ざかっているように思えます。しかし、ソフトウェアのライフサイクルの観点から見ると、PHP は成長段階にあり、開発者にとってはメリットがデメリットを上回っており、商用アプリケーションに対応できることを期待して、より多くの機能を追加する必要があります。 PHP の忠実なユーザーとして、PHP が常に「機能が不十分である」と非難されることは望ましくありません。
JSP によく似ているという理由だけで、SMARTY を選択する理由は何ですか?確かにもっと良い理由があります。まず、最初のコンパイルのコストが比較的高いことに加えて、テンプレート ファイルが変更されない限り、コンパイルされたキャッシュ スクリプトがいつでも利用できるため、parse() 時間が大幅に節約されます。 PHP のような豊富な関数ライブラリ。単語のカウントから自動インデント、テキストの折り返し、正規表現など、データの結果セットのページング表示機能が必要な場合に直接使用できます。強力な拡張機能も備えており、プラグインを通じて拡張できます。
リアルタイムで更新する必要があるコンテンツ。たとえば、頻繁にデータを更新する必要がある株式表示のように、このタイプのプログラムに Smarty を使用すると、テンプレートの処理が遅くなります。
小さなプロジェクト。プロジェクトが単純であるため、アーティストとプログラマーの両方が単純な小規模プロジェクトの場合、smarty を使用すると、PHP を迅速に開発できるという利点が失われます。