検索
ホームページバックエンド開発PHPチュートリアルPHP テンプレート エンジン Smarty_PHP チュートリアルについて学ぶ

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 スクリプトをデザインから独立させるにはどうすればよいですか?これは間違いなく、PHP メーリング リストで最もよく聞かれる質問の 1 つです。 PHP は「HTML 埋め込み言語」として宣伝されていますが、多くの PHP と HTML の混合プロジェクトを作成した後、フォームとコンテンツを分離するというアイデアを思いつきました。さらに、多くの企業では、プランナーの役割はプログラマーの役割とは別になっています。そこで、このようなテンプレート ソリューションが誕生しました...

たとえば、企業におけるアプリケーションの開発プロセスは次のとおりです。企画書を提出した後、インターフェイスデザイナー[アーティスト]がWebサイトの外観モデルを作成し、それをバックエンドプログラマーに渡します。プログラマーは PHP を使用してビジネス ロジックを実装し、外観モデルを使用して基本アーキテクチャを作成します。その後、プロジェクトはさらに改良するために HTML ページ デザイナーに戻されます。このように、プロジェクトはバックエンド プログラマとページ デザイナーの間を何度も行き来することがあります。バックエンド プログラマーは HTML タグに干渉することを好まないため、アーティストが PHP コードを混合する必要はありません。アート デザイナーは構成ファイル、ダイナミック ブロック、その他のインターフェイス部分のみが必要で、複雑な PHP コードに触れる必要はありません。 。したがって、現時点では適切なテンプレートをサポートすることが重要です。

現在存在する多くの PHP テンプレート ソリューション (PHPLIB など) を見ると、そのほとんどは、変数をテンプレートに置き換えたり、機能が制限されたダイナミック ブロックをフォーマットしたりする基本的な方法しか提供していません。しかし、私たちのニーズはこれよりもはるかに高いものです。 PHP プログラマーには HTML ページをデザインしてほしくありませんが、これは避けられません。たとえば、アーティストがダイナミック ブロック間で異なる背景色を交互に使用したい場合は、事前にプログラマーと同意する必要がある場合があります。同様に、アーティストもページ デザイン用に独自の設定ファイルを用意する必要があります。これは、変数を通じてテンプレートに取り込むこともできます。

スマートとは

Smarty は、PHP で書かれたテンプレート PHP テンプレート エンジンであり、現在業界で最も有名な PHP テンプレート エンジンの 1 つです。論理コードと外部コンテンツを分離し、元々 HTML コードと混在していた PHP コードを論理的に分離する、管理と使用が簡単な方法を提供します。簡単に言えば、その目的は、PHP プログラマーとアーティストを分離することです。プログラマーがプログラムの論理コンテンツを変更しても、アーティストがページを再変更しても、それは影響を与えません。プログラムのプログラム ロジック これは、複数人が参加するアプリケーションで特に重要です。

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 のような豊富な関数ライブラリ。単語のカウントから自動インデント、テキストの折り返し、正規表現など、データの結果セットのページング表示機能が必要な場合に直接使用できます。強力な拡張機能も備えており、プラグインを通じて拡張できます。

賢い利点

  • 速度: Smarty を使用して作成されたプログラムは、他のテンプレート エンジン テクノロジーと比較して最大速度の向上を達成できます。
  • コンパイル済みタイプ: Smarty で書かれたプログラムは、実行時に非テンプレート テクノロジの PHP ファイルにコンパイルする必要があります。このファイルは、次回テンプレートにアクセスしたときに、PHP と HTML を組み合わせて使用​​します。テンプレートの再コンパイルが不要になります (ソース プログラムが変更されていない場合)。
  • キャッシュ技術:smarty が選択したキャッシュ技術。smarty のキャッシュ属性が true に設定されている場合、smarty が設定したキャッシュ時間内に、ユーザーが最終的に表示する HTML ファイルをキャッシュします。ユーザーの WEB リクエストは、この静的 HTML ファイルに直接変換されます。これは、静的 HTML ファイルを呼び出すことと同じです。
  • プラグインテクノロジー: Smarty はプラグインをカスタマイズできます。プラグインは実際にはいくつかのカスタム関数です。
  • If/elseif/else/endif はテンプレートで使用できます。テンプレート ファイルで判断ステートメントを使用すると、テンプレートを非常に便利に再フォーマットできます。

smartyの使用には適していません

リアルタイムで更新する必要があるコンテンツ。たとえば、頻繁にデータを更新する必要がある株式表示のように、このタイプのプログラムに Smarty を使用すると、テンプレートの処理が遅くなります。

小さなプロジェクト。プロジェクトが単純であるため、アーティストとプログラマーの両方が単純な小規模プロジェクトの場合、smarty を使用すると、PHP を迅速に開発できるという利点が失われます。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/752420.html技術記事 PHPを使用したMVC開発モデルのロジック層やプレゼンテーション層にはさまざまなテンプレートエンジンが用意されていますが、公式エンジンSMARTYの誕生により選択肢が変わりました。そのコンセプトと実装はかなり...
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
誇大広告を超えて:今日のPHPの役割の評価誇大広告を超えて:今日のPHPの役割の評価Apr 12, 2025 am 12:17 AM

PHPは、特にWeb開発の分野で、最新のプログラミングで強力で広く使用されているツールのままです。 1)PHPは使いやすく、データベースとシームレスに統合されており、多くの開発者にとって最初の選択肢です。 2)動的コンテンツ生成とオブジェクト指向プログラミングをサポートし、Webサイトを迅速に作成および保守するのに適しています。 3)PHPのパフォーマンスは、データベースクエリをキャッシュおよび最適化することで改善でき、その広範なコミュニティと豊富なエコシステムにより、今日のテクノロジースタックでは依然として重要になります。

PHPの弱い参照は何ですか、そしていつ有用ですか?PHPの弱い参照は何ですか、そしていつ有用ですか?Apr 12, 2025 am 12:13 AM

PHPでは、弱い参照クラスを通じて弱い参照が実装され、ガベージコレクターがオブジェクトの回収を妨げません。弱い参照は、キャッシュシステムやイベントリスナーなどのシナリオに適しています。オブジェクトの生存を保証することはできず、ごみ収集が遅れる可能性があることに注意する必要があります。

PHPで__invoke Magicメソッドを説明してください。PHPで__invoke Magicメソッドを説明してください。Apr 12, 2025 am 12:07 AM

\ _ \ _ Invokeメソッドを使用すると、オブジェクトを関数のように呼び出すことができます。 1。オブジェクトを呼び出すことができるように\ _ \ _呼び出しメソッドを定義します。 2。$ obj(...)構文を使用すると、PHPは\ _ \ _ Invokeメソッドを実行します。 3。ロギングや計算機、コードの柔軟性の向上、読みやすさなどのシナリオに適しています。

同時性については、PHP 8.1の繊維を説明します。同時性については、PHP 8.1の繊維を説明します。Apr 12, 2025 am 12:05 AM

繊維はPhp8.1で導入され、同時処理機能が改善されました。 1)繊維は、コルーチンと同様の軽量の並行性モデルです。 2)開発者がタスクの実行フローを手動で制御できるようにし、I/O集約型タスクの処理に適しています。 3)繊維を使用すると、より効率的で応答性の高いコードを書き込むことができます。

PHPコミュニティ:リソース、サポート、開発PHPコミュニティ:リソース、サポート、開発Apr 12, 2025 am 12:04 AM

PHPコミュニティは、開発者の成長を支援するための豊富なリソースとサポートを提供します。 1)リソースには、公式のドキュメント、チュートリアル、ブログ、LaravelやSymfonyなどのオープンソースプロジェクトが含まれます。 2)StackOverFlow、Reddit、およびSlackチャネルを通じてサポートを取得できます。 3)開発動向は、RFCに従うことで学ぶことができます。 4)コミュニティへの統合は、積極的な参加、コード共有への貢献、および学習共有への貢献を通じて達成できます。

PHP対Python:違いを理解しますPHP対Python:違いを理解しますApr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHP:それは死にかけていますか、それとも単に適応していますか?PHP:それは死にかけていますか、それとも単に適応していますか?Apr 11, 2025 am 12:13 AM

PHPは死にかけていませんが、常に適応して進化しています。 1)PHPは、1994年以来、新しいテクノロジーの傾向に適応するために複数のバージョンの反復を受けています。 2)現在、電子商取引、コンテンツ管理システム、その他の分野で広く使用されています。 3)PHP8は、パフォーマンスと近代化を改善するために、JITコンパイラおよびその他の機能を導入します。 4)Opcacheを使用してPSR-12標準に従って、パフォーマンスとコードの品質を最適化します。

PHPの未来:適応と革新PHPの未来:適応と革新Apr 11, 2025 am 12:01 AM

PHPの将来は、新しいテクノロジーの傾向に適応し、革新的な機能を導入することで達成されます。1)クラウドコンピューティング、コンテナ化、マイクロサービスアーキテクチャに適応し、DockerとKubernetesをサポートします。 2)パフォーマンスとデータ処理の効率を改善するために、JITコンパイラと列挙タイプを導入します。 3)パフォーマンスを継続的に最適化し、ベストプラクティスを促進します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。