php Smarty テンプレート エンジンの使用方法: まず、Smarty の公式 Web サイトからダウンロードしてインストールし、次に Smarty クラス ライブラリにメンバーを設定します。最後に、Smarty へのすべてのアクセスを変数に基づいて行うことができます。
php Smarty テンプレート エンジンの使用法:
1. 概要:
Smarty は、PHP の多数のテンプレート エンジンの 1 つで、PHP に基づいて作成されたクラス ライブラリです。
Smarty の利点:
1. Web サイトのアクセス速度を最適化;
2. Web フロントエンドの設計とプログラムを分離;
2. Smarty のインストール
1. Smarty の公式 Web サイト http://www.smarty.net/download.php から最新の Smarty バージョンをダウンロードする必要があります。たとえば、ダウンロードされたバージョンは次のとおりです: Smarty-2.6 .18 .tar.tar;
2. Smarty-2.6.18.tar.tar
圧縮パッケージを解凍すると、多くのファイルとフォルダーが見つかります。libs フォルダーを除いて、すべてその他 削除しても無駄です;
3. Smarty テンプレート エンジンを呼び出すときは、まず PHP の require ステートメントを使用して libs/Smarty.class.php
ファイルをロードする必要があります。
3. Smarty クラス ライブラリのデフォルト設定
必須 Smarty.class.php
ファイルを入力した後、設定を変更する必要がある場合は、 Smarty クラス ライブラリ内でメンバーを設定するには 2 つの方法があります: 1 つは Smarty.class.php
ファイル内で直接変更する方法、もう 1 つはクラス ライブラリを初期化した後に再指定する方法、一般的には後者が使用されます。以下は、Smarty クラス ライブラリのメンバー属性について説明します:
1, $template_dir
: Web サイトのテンプレート ファイルが保存されるディレクトリを設定します。デフォルトのディレクトリは templates
$compile_dir: コンパイルされたファイルが Web サイトに保存されるディレクトリを設定します。デフォルトのディレクトリは templates_c
$config_dir: ディレクトリを定義しますテンプレートの特別な構成ファイルを保存するために使用されます。ディレクトリ、デフォルトは configs
$left_delimiter: テンプレートの左終端変数に使用され、デフォルトは '{'## です
#5、
: テンプレート内の右終端変数に使用されます。デフォルトは '}'
Smarty のすべてのアクセスは変数に基づいており、以下は例を通して説明します。
アイデアの例: メイン ファイルでは、テンプレート初期化構成ファイル (init.inc.php) とクラスを導入し、テンプレート内の変数に値を割り当てて表示します。
まず、Smarty テンプレートの初期設定ファイルとして
init.inc.php ファイルを設定します <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">init.inc.php
<?php
define(&#39;ROOT_PATH&#39;, dirname(__FILE__)); //定义网站根目录
require ROOT_PATH.&#39;/libs/Smarty.class.php&#39;; //载入 Smarty 文件
$_tpl = new Smarty(); //实例化一个对象
$_tpl->template_dir = ROOT_PATH.&#39;/tpl/&#39;; //重新设置模板目录为根目录下的 tpl 目录
$_tpl->compile_dir = ROOT_PATH.&#39;./com/&#39;; //重新设置编译目录为根目录下的 com 目录
$_tpl->left_delimiter = &#39;<{&#39;; //重新设置左定界符为 &#39;<{&#39;
$_tpl->right_delimiter = &#39;}>&#39;; //重新设置左定界符为 &#39;}>&#39;
?></pre><div class="contentsignin">ログイン後にコピー</div></div>
メインファイル
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><?php
require &#39;init.inc.php&#39;; //引入模板初始化文件
require &#39;Persion.class.php&#39;; //载入对象文件
global $_tpl;
$title = &#39;This is a title!&#39;;
$content = &#39;This is body content!&#39;;
/*
* 一、从 PHP 中分配给模板变量;
* 动态的数据(PHP从数据库或文件,以及算法生成的变量)
* 任何类型的数据都可以从PHP分配过来,主要包括如下
* 标量:string、int、double、boolean
* 复合:array、object
* NULL
* 索引数组是直接通过索引来访问的
* 关联数组,不是使用[关联下标]而是使用 . 下标的方式
* 对象是直接通过->来访问的
* */
$_tpl->assign(&#39;title&#39;,$title);
$_tpl->assign(&#39;content&#39;,$content); //变量的赋值
$_tpl->assign(&#39;arr1&#39;,array(&#39;abc&#39;,&#39;def&#39;,&#39;ghi&#39;)); //索引数组的赋值
$_tpl->assign(&#39;arr2&#39;,array(array(&#39;abc&#39;,&#39;def&#39;,&#39;ghi&#39;),array(&#39;jkl&#39;,&#39;mno&#39;,&#39;pqr&#39;))); //索引二维数组的赋值
$_tpl->assign(&#39;arr3&#39;,array(&#39;one&#39;=>&#39;111&#39;,&#39;two&#39;=>&#39;222&#39;,&#39;three&#39;=>&#39;333&#39;)); //关联数组的赋值
$_tpl->assign(&#39;arr4&#39;,array(&#39;one&#39;=>array(&#39;one&#39;=>&#39;111&#39;,&#39;two&#39;=>&#39;222&#39;),&#39;two&#39;=>array(&#39;three&#39;=>&#39;333&#39;,&#39;four&#39;=>&#39;444&#39;))); //关联二维数组的赋值
$_tpl->assign(&#39;arr5&#39;,array(&#39;one&#39;=>array(&#39;111&#39;,&#39;222&#39;),array(&#39;three&#39;=>&#39;333&#39;,&#39;444&#39;))); //关联和索引混合数组的赋值
$_tpl->assign(&#39;object&#39;,new Persion(&#39;小易&#39;, 10)); //对象赋值
//Smarty 中数值也可以进行运算(+-*/^……)
$_tpl->assign(&#39;num1&#39;,10);
$_tpl->assign(&#39;num2&#39;,20);
$_tpl->display(&#39;index.tpl&#39;);
?></pre><div class="contentsignin">ログイン後にコピー</div></div>
メインファイル
index.tpl
のテンプレートファイル(/tpl/ディレクトリに置かれます)<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><{$title}></title>
</head> <body>
变量的访问:<{$content}>
<br />
索引数组的访问:<{$arr1[0]}> <{$arr1[1]}> <{$arr1[2]}>
<br />
索引二维数组的访问: <{$arr2[0][0]}> <{$arr2[0][1]}> <{$arr2[0][2]}> <{$arr2[1][0]}> <{$arr2[1][1]}> <{$arr2[1][2]}>
<br />
关联数组的访问:<{$arr3.one}> <{$arr3.two}> <{$arr3.three}>
<br />
关联二维数组的访问:<{$arr4.one.one}> <{$arr4.one.two}> <{$arr4.two.three}> <{$arr4.two.four}>
<br />
关联和索引混合数组的访问:<{$arr5.one[0]}> <{$arr5.one[1]}> <{$arr5[0].three}> <{$arr5[0][0]}>
<br />
对象中成员变量的访问:<{$object->name}> <{$object->age}>
<br />
对象中方法的访问:<{$object->hello()}>
<br />
变量的运算:<{$num1+$num2}>
<br />
变量的混合运算:<{$num1+$num2*$num2/$num1+44}>
<br />
</body>
</html></pre><div class="contentsignin">ログイン後にコピー</div></div>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><?php
class Persion {
public $name; //为了访问方便,设定为public
public $age;
//定义一个构造方法
public function __construct($name,$age) {
$this->name = $name;
$this->age = $age;
}
//定义一个 hello() 方法,输出名字和年龄
public function hello() {
return &#39;您好!我叫&#39;.$this->name.&#39;,今年&#39;.$this->age.&#39;岁了。&#39;;
}
}
?></pre><div class="contentsignin">ログイン後にコピー</div></div>
実行結果:
变量的访问:This is body content! 索引数组的访问:abc def ghi 索引二维数组的访问: abc def ghi jkl mno pqr 关联数组的访问:111 222 333 关联二维数组的访问:111 222 333 444 关联和索引混合数组的访问:111 222 333 444 对象中成员变量的访问:小易 10 对象中方法的访问:您好!我叫小易,今年10岁了。 变量的运算:30 变量的混合运算:94
PHP プログラミングの入門から熟練度まで
以上がPHP Smartyテンプレートエンジンの使い方は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。