Smarty のすべてのアクセスは変数に基づいています。以下に例を示します。
アイデアの例: メイン ファイルでは、テンプレート初期化設定ファイル (init.inc.php) とクラスが導入され、テンプレート内の変数に値が割り当てられます。
まず、Smartyテンプレートの初期設定ファイルとしてinit.inc.phpファイルを設定します
init.inc.php
define('ROOT_PATH', dirname(__FILE__)); //Web サイトのルート ディレクトリを定義します
require ROOT_PATH.'/libs/Smarty.class.php' //Smarty ファイルをロードします
;$_tpl = new Smarty() // オブジェクトをインスタンス化します
;$_tpl->template_dir = ROOT_PATH.'/tpl/' // テンプレート ディレクトリをルート ディレクトリ下の tpl ディレクトリに再設定します
$_tpl->compile_dir = ROOT_PATH.'./com/' //コンパイルディレクトリをルートディレクトリ下の com ディレクトリにリセットします
$_tpl->left_delimiter = '<{' //左区切り文字を '<{' にリセットします
;$_tpl->right_delimiter = '}>' //左の区切り文字を '}>' にリセットします
?>
メインファイルindex.php
require 'init.inc.php' //テンプレート初期化ファイルを導入します
;
require 'Persion.class.php' // オブジェクトファイルをロードします;
グローバル $_tpl;
$title = 'これはタイトルです!';
$content = 'これは本文のコンテンツです!';
/*
* 1. PHP からテンプレート変数に代入します。
* 動的データ (データベースまたはファイルからの PHP、およびアルゴリズムによって生成された変数)※PHPからは主に以下のようなあらゆる種類のデータを割り当てることができます
* スカラー: string、int、double、boolean
* 複合: 配列、オブジェクト
* * ヌル
* インデックス配列はインデックスを通じて直接アクセスされます
* 連想配列の場合は、[連想添字] を使用する代わりに、添字
を使用します。
* オブジェクトには ->を通じて直接アクセスします。
* */$_tpl->assign('タイトル',$タイトル);
$_tpl->assign('content',$content) //変数の代入
$_tpl->assign('arr1',array('abc','def','ghi')) //インデックス配列の代入
$_tpl->assign('arr2',array(array('abc','def','ghi'),array('jkl','mno','pqr'))); //インデックス 2-次元配列の代入
$_tpl->assign('arr3',array('one'=>'111','two'=>'222','three'=>'333')); //連想配列の代入
$_tpl->assign('arr4',array('one'=>array('one'=>'111','two'=>'222'),'two'=>array( 'three'=>'333','four'=>'444'))) //関連する 2 次元配列の代入
$_tpl->assign('arr5',array('one'=>array('111','222'),array('three'=>'333','444'))) / /連想配列とインデックス付き混合配列の代入
$_tpl->assign('object',new Persion('Xiaoyi', 10)); //オブジェクトの割り当て
//Smarty値も計算可能(+-*/^...)
$_tpl->assign('num1',10);
$_tpl->assign('num2',20);$_tpl->display('index.tpl');
?>
メインファイルindex.phpのテンプレートファイルindex.tpl(/tpl/ディレクトリに保存)
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
http://www.w3.org/1999/xhtml">
頭>
変数アクセス: <{$content}>
オブジェクト内のメソッドへのアクセス: <{$object->hello()}>
本文>
Persion.class.php
クラスパーション {
public $name //アクセスしやすいように public に設定します
;公開 $age
//構築メソッドを定義します
パブリック関数 __construct($name,$age) {
$this->name = $name;
$this->age = $age;}
//名前と年齢を出力するための hello() メソッドを定義します
パブリック関数 hello() {
return 「こんにちは!」私の名前は「.$this->name.」、今年「.$this->age.」です。 ';
}
}
?>
実行結果:
可変アクセス: これは本文のコンテンツです!
インデックス配列アクセス: abc def ghi
インデックス付き 2 次元配列へのアクセス: abc def ghi jkl mno pqr
連想配列へのアクセス: 111 222 333
連想二次元配列へのアクセス: 111 222 333 444
混合連想配列とインデックス付き配列へのアクセス: 111 222 333 444
オブジェクト内のメンバー変数へのアクセス: Xiaoyi 10
オブジェクト内のメソッドへのアクセス: こんにちは!私の名前はシャオイー、今年10歳です。
変数の操作: 30
変数に対する混合演算: 94
leeさんのコラムより抜粋