これは古い記事ですが、Smarty テンプレート エンジンについて紹介されている知識は今でも非常に役立ちますので、参考のためにここで共有します。 PHPを使用したMVC開発モデルのロジック層やプレゼンテーション層にはさまざまなテンプレートエンジンが用意されていますが、公式エンジンSMARTYの誕生により選択肢が変わりました。そのコンセプトと実装は非常に「前衛的」です。この記事では主に、他のテンプレート エンジンと比較した SMARTY の異なる特性について説明し、エンジンのインストールと使用方法を簡単に紹介し、小さなテスト ケースを使用して SMARTY テンプレートと PHPLIB テンプレートの速度と使いやすさを比較します。 1. MVC にはテンプレートが必要です MVC は、SmallTalk 言語の開発プロセス中に、それぞれ「モデル」、「ビュー」、「コントロール」を表す設計パターンとしてまとめられました。その目的は、大規模および中規模の異なる開発ロールがそれぞれの役割を実行できるようにすることです。サイズの高いプロジェクト。ネットワーク アプリケーションの開発では、次の図を使用して概念間の関係を表すことができます。 この図は単純な WEB アプリケーションを示しています。ユーザーがブラウザ上で見る情報はデータベース サーバー上のコンテンツですが、事前にアプリケーション サーバーによって処理されています。開発者は、データ構造、データ処理ロジック、データ表現方法を確立する責任があります。 1996 年に中国で CGI が普及したとき、初期の WEB プログラマーはすべて HTML を独学で学びました。しかし、ネットワークの速度が段階的に増加するにつれて、ページ サイズも増加しました。元の 20 ~ 30 K から 10 倍に増加しました。 CGI プログラムを作成すると、PERL ソース コードと HTML ソース コードを分離するという緊急の要件が生じます。したがって、社会の進歩は開発チーム内の分業に反映されます。アーティストとプログラマーはお互いの仕事にあまり精通していないため、協力中にコミュニケーションをとるために合意された「言語」を使用する必要があります。 この言語は私たちの母語でも英語でもありません。この用語は「テンプレート」と呼ばれ、ロジックと表現はそれに依存しています。 HTMLとスクリプト言語の特徴を組み合わせた表現方法です。このようにして、プレゼンテーション層はロジック層で処理されたデータをユーザーが希望する形式で表示することができます。 Windows プラットフォームでの MFC 開発経験がある場合は、ドキュメント/ドキュメント テンプレート/ビューのカプセル化に精通しているはずです。これは非常に典型的な MVC の例です。 Web アプリケーションに関しては、個人的には J2EE の EJB/サーブレット/JSP が最も強力だと考えています。もちろん、シンプルで美しい Structs もあります。もう 1 つのよく知られた実装は、COM/DCOM+ASP です。この組み合わせは、我が国のほとんどの人に使用されています。 WEB アプリケーションでのいくつかの MVC 実装を比較することで、テンプレートに関する概念を得ることができます。これは、HTML に挿入される一連のスクリプト、または挿入されたコンテンツがデータの変更を表すスクリプト HTML です。以下は、ブラウザに「Hello, world!」を表示するためのテンプレートファイルの例です。
処理方法はここでは省略し、後で比較するために具体的に説明します。 2. SMARTYを選ぶ理由 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 のような豊富な関数ライブラリ。単語のカウントから自動インデント、テキストの折り返し、正規表現など、データの結果セットのページング表示機能が必要な場合に直接使用できます。強力な拡張機能も備えており、プラグインを通じて拡張できます。 事実は言葉よりも雄弁です。テストプログラムを設計し、速度と開発難易度の2つの要素に基づいてSMARTYとPHPLIBテンプレートを比較しました。PHPLIBテンプレートを選択した理由は、Patrickの記事「Choosing the Most Ideal Template in the PHP World」にPHPLIBテンプレートがあるからです。 Fast テンプレートの競争では、PHPLIB テンプレートが大勝利を収め、SMARTY が好敵手となりました。テストする前に、インストール プロセス中に注意する必要がある問題について説明します。 |