テンプレート エンジンを初めて使用する PHP デザイナーは、Smarty と聞くと難しく感じるでしょう。実際、著者も例外ではなく、あえて触れません。しかしその後、XOOPS のプログラム アーキテクチャを分析したところ、Smarty は実際には難しくないことがわかり始めました。 Smarty の基本的なスキルをマスターしていれば、一般的なアプリケーションには十分です。もちろん、基礎をしっかりと築くことができれば、その後の高度な応用について心配する必要はありません。
この記事の主な目的は、公式の使用説明書に完全に記載されている Smarty の使用法を掘り下げることではありません。著者は、Smarty を理解したいのに理解できない友人がそこからインスピレーションを得られるように、自身の使用体験の一部だけを書き留めています。この記事の内容はそれほど深いものではないため、Smarty を使用できる友人は少し簡単だと感じるかもしれません。
この記事は 3 回目の改訂であり、さらに情報を追加したいと思っていましたが、時間の都合上、Smarty の高度なテクニックの多くを十分に研究していないため、あえて紹介しません。この記事は、Smarty を学びたいほとんどの初心者を満足させるはずです。もちろん、この記事に誤りがある場合はお知らせください。著者は次回の改訂でそれらを修正します。
Smartyの紹介
テンプレートエンジンとは
いつからか分かりませんが、HTMLにサーバースクリプトを埋め込むことに不満を感じる人が現れました。ただし、Microsoft の ASP とオープンソースの PHP はどちらも、サーバー スクリプトが組み込まれた Web サーバー側言語です。そこで、プログラムのアプリケーションロジック(または業務アプリケーションのロジック)とWebページのレンダリング(レイアウト)のロジックを分離できれば良いのではないかと考える人もいるのでは?
実際、この問題は長い間存在していました。インタラクティブなWebページが普及したとき、ASPとPHPの両方のユーザーはプログラム開発者であり、ビジュアルデザイナーでもありました。しかし、通常、これらのユーザーはプログラミングが得意か芸術が得意で、その両方を同時に担当しようとすると、多くの脳細胞が失われることになります...
そこでテンプレート エンジンが登場しました。テンプレート エンジンの目的は、上記の論理的分離の機能を実現することです。これにより、プログラム開発者はデータ制御や機能の実現に集中できる一方、ビジュアルデザイナーは Web ページのレイアウトに集中して、Web ページをよりプロフェッショナルに見せることができます。したがって、テンプレート エンジンは企業の Web サイト開発チームによる使用に適しており、誰もが専門知識を活用できます。
筆者がこれまで接してきたテンプレートエンジンは、データの表現方法により、プログラムで処理する必要があるテンプレートエンジンと、テンプレート自体で完全に決定されるテンプレートエンジンの2種類に大別される。
プログラムで処理する必要があるテンプレート エンジンでは、プログラム開発者は変数のプレゼンテーション ロジックを担当する必要があります。つまり、変数の内容を処理してからテンプレートに出力する必要があります。仕事を割り当てる。言い換えれば、プログラム開発者は変数の外観を決定するためにさらに多くのプログラムを作成する必要があります。テンプレート エンジンはテンプレート自体によって完全に決定され、変数をテンプレートに直接割り当てることができるため、ビジュアル デザイナーはテンプレートの設計時に変数がどのように表示されるかを決定できます。したがって、制御変数の提示を容易にするために、独自のテンプレート プログラム構文の別のセット (Smarty など) が存在する場合があります。ただし、このように、ビジュアル デザイナーはテンプレート言語の使用方法も学ぶ必要があります。
テンプレートエンジンの動作原理 まず、以下の動作表を見てみましょう:
一般的なテンプレートエンジン(PHPLibなど)は、テンプレートオブジェクトを作成する際に、解析対象のテンプレートを取得し、 parse() メソッドを使用してテンプレートを解析し、最終的に Web ページを出力します。
Smarty ユーザーの場合、プログラム内で解析アクションを実行する必要はなく、Smarty が自動的に実行します。さらに、コンパイルされた Web ページのテンプレートが変更されていない場合、Smarty はコンパイル アクションを自動的にスキップし、コンパイルされた Web ページを直接実行してコンパイル時間を節約します。
Smartyのいくつかの概念を使用すると
一般的なテンプレートエンジンでは、いわゆるブロックの概念はおそらく次のようになります:
。領域内容
これらのブロックのほとんどは、PHP プログラムでの表示ステータスを制御するために if または for を使用しますが、テンプレートははるかに単純に見えます。別の表示方法に変更した場合は、PHP プログラムを再度変更する必要があります。
Smartyでは、すべてが変数に基づいており、すべてのプレゼンテーションロジックはテンプレートによって制御されます。 Smarty には独自のテンプレート言語があるため、ブロックを表示する必要があるか繰り返す必要があるかに関係なく、ブロックは Smarty のテンプレート構文 (if、foreach、section) と変数コンテンツを使用して表示されます。このようにテンプレートが少し複雑になったように感じますが、しっかり計画を立てればPHPプログラムは一行も変更する必要がないという利点があります。
上記の説明から、Smarty を使用する場合は、プログラム アプリケーション ロジックと Web ページ レンダリング ロジックを明確に分離するという 1 つの原則を習得する必要があることがわかります。つまり、PHP プログラム内に HTML コードが多すぎてはなりません。プログラムでは、どの変数をテンプレートに挿入するかを決定するだけでよく、これらの変数をどのように表示するか (またはまったく表示しないことも) はテンプレートに決定させます。
Smartyの基本
Smartyのインストール
まずはプログラムをどこに配置するかを決めます。
Windowsでは、「d:appservwebdemo」のような場所があるかもしれません。
Linux では、場所は「/home/jaceju/public_html/」のようになります。
Smarty の公式 Web サイトにアクセスして、最新の Smarty パッケージをダウンロードします: http://smarty.php.net。
Smarty 2.6.0のロックを解除すると、libsフォルダーを含む多くのファイルが表示されます。 libs には 3 つの class.php ファイル + 1 つの debug.tpl + 1 つのプラグイン フォルダー + 1 つのコア フォルダーがあるはずです。次に、libs をプログラムのメイン フォルダーに直接コピーし、名前を class に変更します。それだけです?それは正しい!このインストール方法は比較的単純で、通常、独自のホストを持たないユーザーに適しています。
なぜSmartyの公式マニュアルではさらに複雑なインストール方法が紹介されているのでしょうか?基本的に、これは公式の方法に従ってインストールされ、ホスト上に 1 回だけインストールされ、その後、Smarty のコピーを繰り返しインストールすることなく、さまざまなプログラムを開発する際に直接参照できるようにホスト下のすべての設計者に提供されます。著者が提供する方法は、プログラムをあちこちに移動したいプログラム開発者に適しているため、ホストに Smarty がインストールされているかどうかを心配する必要はありません。
プログラムフォルダーの設定
WindowsにAppservをインストールする著者を例に挙げます。プログラムのメインフォルダーは「d:appservwebdemo」です。 Smarty をインストールした後、メイン フォルダーの下に次のようなフォルダーを作成します:
Linux では、templates_c の権限を 777 に変更することを忘れないでください。 Windows では、読み取り専用としてキャンセルします。
Smartyで書いた最初の小さなプログラム
まず、次のファイルにmain.phpという名前を付けて、メインフォルダに置いてください:
main.php:
< ;?php
include "class/Smarty.class.php";
define('__SITE_ROOT', 'd:/appserv/web/demo'); // 末尾にスラッシュはありません
$tpl = new Smarty();
$tpl-> ;template_dir = __SITE_ROOT . "/templates/";
$tpl->compile_dir = __SITE_c/";
$tpl->config_dir = "/configs/";
$tpl ->cache_dir = __SITE_ROOT . "/cache/";
$tpl->left_delimiter = ' $tpl->right_delimiter = '}>';
?>
上記の方法に従いますこの設定では、プログラムを他の場所に移植する必要がある場合は、__SITE_ROOT を変更するだけです。 (これはXOOPSへの参照用です)
Smartyのテンプレートパスが設定されると、プログラムはこのパスに従ってすべてのテンプレートの相対位置を取得します(例では、'd:/appserv/web/demo/templates/) ')。次に、display() Smarty メソッドを使用してテンプレートを表示します。
次に、templatesフォルダーの下にtest.htmを置きます: (拡張子は何でも構いませんが、ビジュアルデザイナーが開発するのに便利なので、私は主に.htmを使用します。)
templates/test.htm :

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

Dreamweaver Mac版
ビジュアル Web 開発ツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ホットトピック









