PHP テンプレート エンジン Smarty_PHP チュートリアルの詳細な紹介

WBOY
リリース: 2016-07-20 10:57:30
オリジナル
923 人が閲覧しました

PHP テンプレート エンジン、Smarty、 FastTemplate や patTemplate などの他のテンプレート エンジンとは異なります。主な理由は、Smarty がテンプレートを PHP スクリプトに変換し、テンプレートが作成されるたびに表示される解析リンクを排除することです。制御およびエラーチェック用の追加コードが使用されます。

この機能により、Smarty は大規模なアプリケーションやトラフィックの多い Web サイトで適切なパフォーマンスを発揮できるようになります。テンプレートのコンパイルに加えて、Smarty には他にも多くの優れた機能がありますが、これについては後ほど詳しく説明します。

まず、テンプレートのコンパイルの秘密を明らかにしましょう。

「テンプレートコンパイル」とはどういう意味ですか? Web ページにはどのような編集が必要ですか? C++やJavaでもコンパイルが必要ではないでしょうか?はい、ただしここでのコンパイルは少し異なります。 Smarty はテンプレートを解析し、通常のプログラミングと同様に、バイナリ コードではなく PHP スクリプトに変換します。このようにして、Web ページが閲覧されるときに、Smarty はテンプレート自体ではなく PHP スクリプト ファイルを直接読み取るため、再度解析する時間を節約できます。

Smarty は、いつコンパイルするかを賢く決定します。Web ページに実際に変更を加えた場合にのみ再コンパイルされるため、手動コンパイルの問題を心配する必要はありません。この利点は、PHP スクリプトやコーディングについて何も知る必要がないことです。これはすべて後で行われるため、テンプレート設計者は Smarty が「テンプレート コンパイル エンジン」であることを認識する必要さえありません。

Smarty は、テンプレート出力を自動的にキャッシュすることでも知られています。

Smarty はテンプレートの出力コンテンツをキャッシュするため、データ ソースからデータを取得する際のシステム費用を節約します。データ ソースは通常外部にあり、速度が遅いため、リモート データ ソースと同様にアプリケーションのボトルネックになることがよくあります。 Smarty は、データ ソースから取得したデータとともにテンプレートの出力をキャッシュするため、Web ページにアクセスするたびにデータ ソースに接続する必要はありません。データ ソース サーバーが遅い場合、またはデータ ソースへのリクエストが複数ある場合、このキャッシュ機能により Web ページのパフォーマンスが大幅に向上します。

もちろん、株価計算機など、テンプレート出力をキャッシュしたくない場合や、データ ソースを常に変更し、その変更が Web ページにすぐに反映されることを期待する場合もあります。これらは問題ありません。 Smarty では、何をキャッシュすべきか、何をキャッシュすべきでないかを定義することもできます。実際、キャッシュされたコンテンツとキャッシュされていないコンテンツを同じページに置くことができます。Smarty はキャッシュできるもの (永久に変更されないナビゲーション バーなど) とキャッシュできないもの (店舗の証券マシンなど) を正確に定義できるからです。ウェブページの下部)。テンプレートのコンテンツが一定期間のみキャッシュされるように、キャッシュされたコンテンツの有効期間を設定することもできます。このようにして、リアルタイムで更新される大量の情報と、より高速な Web サイト エクスペリエンスとの間のバランスを見つけることができます。

一つ注意しなければならないのは、このキャッシュ機能は Zend Cache や他の PHP アクセラレータとはまったく異なるということです。

Zend Cache のようなキャッシュ ツールは、PHP スクリプトのコンパイル後に生成されたバイトコードをキャッシュしますが、Smarty はテンプレートの出力 (実際には PHP スクリプト) をキャッシュします。したがって、Smarty は Zend Cache と並行して動作できます。ベンチマーク テストの結果、これが完璧なソリューションであることがわかりました。

エンジンの作成者が言ったように、PHP アクセラレータと併用すると Smarty のパフォーマンスが向上します。 Smarty は変数変更関数も提供します。文字列を大文字にしたり、切り取ったり、検索して置換したりできます。変数修飾子はプログラミング プロセスを簡素化し、プログラマーがよく使用する特殊な構文をバイパスします。これにより、テンプレート設計者は、どの変数修飾子が使用できるかを最初に知る必要がありますが、テンプレート変数の形式をより詳細に制御できるようになります。これは構文が簡潔になり、プログラマーでない人でも使用できるため、便利な機能です。

Smarty は、テンプレートに多くの組み込み関数やカスタム関数も提供します。

これらの関数はテンプレート API に似ていますが、カスタム関数は変更できるが、組み込み関数は変更できない点が異なります。これらの関数を使用すると、4F60 は条件付き出力 (if ステートメントを使用)、動的ループ反復 (foreach ステートメントまたはセクション ステートメントを使用)、構成ファイルの読み取り、およびその他の関数を実装できます。

フィルター Smarty はフィルターを分類できるため、テンプレートのコンパイル前またはコンパイル後にフィルターを実行できます。プレフィルターはテンプレートの実行前に使用され、ポストフィルターはテンプレートのコンパイル後に使用され、出力フィルターはテンプレートの出力をフィルター処理します。なぜフィルターを使用するのでしょうか?と尋ねるかもしれません。プレフィルターを使用すると、不要なコンテンツを削除し、不要なコンテンツがコンパイルされないようにすることができます。ポストフィルターは、テンプレートのコンパイル後に作成時間などの追加情報を追加できます。出力フィルターを使用すると、スパムからすべての電子メール アドレスを非表示にするなど、テンプレートの出力を変更できます。

Configファイル Configファイルは、テンプレートのグローバル変数を格納できる設定ファイルです。このようにして、すべてのテンプレートに影響を与えるいくつかのグローバル変数を 1 か所に保存できます。典型的な例は、すべてのテンプレートの配色です。カラースキームを変更する必要がある場合、テンプレート設計者は構成ファイル内の値を変更するだけで済みます。こうすることで、各テンプレートを 1 つずつ変更する必要がなくなります。

プラグイン Smarty プラグイン アーキテクチャはバージョン 2.0 以降に登場し、Smarty をよりユーザーフレンドリーにすることができます。前に説明したプレフィルター、ポストフィルターなどは、利用可能なプラグイン タイプに過ぎません。他のプラグイン タイプには、モディファイア、制御モジュール、コンパイラなどが含まれます。プラグインを使用すると、独自のテンプレート関数、変数修飾子、フィルターを作成できます。リソース プラグインを使用して、Smarty の読み取りデータ形式 (デフォルトはフラット化ファイル) を変更することもできます。

リソース プラグインを通じて、テンプレートをデータベースに保存し、特定のインターフェイスを通じてデータを取得できます。結論 Smarty のテンプレート コンパイル機能と PHP 本来の効率性を組み合わせると、絶対的な速度の利点が得られます。 Smarty は、適切に設計されたプラグイン アーキテクチャを使用して、テンプレート関数や変数修飾子などの拡張機能も備えています。速度と機能の向上は Smarty の親和性に影響を与えていません。実際、Smarty は非常に使いやすいです。 Smarty には、オンラインでドキュメントを共有する機能も備わっています。 Smarty Web サイトからダウンロードできます。

Smarty の作者の 1 人、Andrei Zmievski は PHP 開発チームのメンバーでもあり、Smarty が PHP の開発に追いつくために全力を尽くします。したがって、安心してください。PHP のどのリビジョンも Smarty によってサポートされます。

上記の内容のご紹介がお役に立てれば幸いです。


www.bkjia.com本当http://www.bkjia.com/PHPjc/445769.html技術記事 PHP テンプレート エンジン Smarty は、FastTemplate や patTemplate などの他のテンプレート エンジンとは異なります。主な理由は、Smarty がテンプレートを PHP スクリプトに変換し、毎回...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート