Smarty 3学習初日
15460 ワード
Smarty3
By ~
2014-9-23 21:46:38
1、smartyって何?Smartyはphpで書かれたテンプレートエンジンを採用し、設計の目的はphpコードとhtmlコードを分離し、phpプログラマーがphpコードの作成に専念することであり、ウェブページの美化に専念することである.2、テンプレートエンジンを採用した後:1)phpコードとhtmlコードが分離され、phpコードは単独のphpファイルに置かれている.htmlコードは単独のhtmlファイルに格納される2)データの転送先phpのデータはまずテンプレートエンジンに与えられ,その後,テンプレートエンジンは受信したデータをテンプレートファイルに表示する.3)テンプレートファイルにはphpコードやphpタグが表示されなくなり,テンプレートに表示されるデータはすべてテンプレートエンジンのタグで表示される.
index.php -> smarty -> index.html
3、Smartyの利点:1)速度が速い:他のテンプレートエンジンに比べて2)コンパイル型:キャッシュ技術をサポートし、毎回再コンパイルする必要がない(テンプレートファイルが変更されていない場合)3)テンプレートではプロセス制御文を使用することができる.4、Smarty模版エンジンの動作フロー①phpプログラムの実行時に、smarty模版エンジンを初期化②smarty模版エンジンが模版ファイル(.htmlまたはtplファイル)を読み取る③模版ファイルを読み取る時、smarty模版エンジンは自動的にその模版ファイルを再コンパイルする必要があるかどうかを判断する.④再コンパイルが必要でない場合は、そのままテンプレート変数置換を行います.⑤このプログラムファイルを初めて実行した場合、またはテンプレートが変更された場合は、再コンパイルしてからテンプレート変数の置換を行う必要があります.⑥最終的に実行されるのは、コンパイルされたphpファイルです.⑦結果をブラウザに出力します.5、Smartyを入手する方法:公式サイトにsmartyモデルエンジン圧縮パッケージ公式サイトをダウンロードする方法:http://www.smarty.net解凍後libsディレクトリをプロジェクト開発ディレクトリ6にコピーし、Smartyテンプレートを構築する例:1)libsライブラリディレクトリをコピーする.2)テンプレートディレクトリtemplatesテンプレートファイル格納ディレクトリを作成configsプロファイルディレクトリを作成3)indexを記述する.phpファイル(エントリファイル)はSmartyのインポートと作成を行います.templatesディレクトリにindexを新規作成します.htmlテンプレートファイル++index.php
<?php
require("libs/Smarty.class.php"); // Smarty
$smarty = new Smarty(); //
$smarty->assign("name","zhangsan"); // Smarty name=zhangsan
$smarty->display("index.html"); // index.html
?>
++ index.html
<html>
{$name}
</html>
[ヒント]assign():主にphpのスカラータイプのデータをテンプレート変数display():主に指定したテンプレートファイルを表示するために使用され、パスを指定できます[テンプレートに割り当てられた変数をどのように表示しますか?]一般的な変数は{$var}形式を用いる.例えば、ここで割り当てたname=zhangsanは、テンプレートindexにあります.htmlには{$name}で表示する.テンプレート変数の表示については後述.4)ブラウザを使用してindexにアクセスする.php、ディレクトリtemplatesが作成されます.cとcacheディレクトリ5)最後の構造:
|--libs //Smarty
| |--Smarty.class.php
|--templates //
| |--index.html
|--templates_c //
|--cache // ( )
|--configs //
|--index.php //php ( )
6)その他のオプション構成項目(変更せずにデフォルト):
//
$smarty->debugging=false; // debug
$smarty->template_dir="templates/"; //
$smarty->compile_dir="templates_c/"; //
$smarty->config_dir="configs/"; //
$smarty->cache_dir="cache/"; //
$smarty->caching=false; //
$smarty->cache_lifetime=3600; // , s
$smarty->left_delimiter="{"; //
$smarty->right_delimiter="}"; //
7、Smartyが適用するテンプレート変数には、通常、文字列、数字、配列、オブジェクトが割り当てられる[例]2.php:
1 $smarty->assign("title","Smarty -- ");//
2 $smarty->assign("num",100);//
3 $smarty->assign(array("name"=>"zhangsan","age"=>23));//
4 $smarty->assign("a1",array(10,20,30));//
5 $smarty->assign("a2",array("name1"=>"zs","name2"=>"zs2"));//
6 $smarty->assign("ob",new Demo());// , name age, ,
テンプレート内のアクセス割当ての変数(templates/2.html):
<h2>{$title}</h2>
<ul>
<li><a href="index.php"> </a></li>
<li>^_^{* *}</li>
<li> :{$num},{$num*2}</li>
<li> :{$title}, :{strlen($title)}</li>
<li> :{$name},{$age}</li>
<li> a1:{$a1[0]},{$a1[1]},{$a1[2]}</li>
<li> a2:{$a2['name1']},{$a2['name2']}</li>
<li> a2:{$a2.name1},{$a2.name2}</li>
<li> :{$ob->name},{$ob->age}</li>
</ul>
8、テンプレートのphp関数の使用(一般的にreturnの結果のある関数は直接使用する)(templates/3.html):
{date("Y-m-d H:i:s")}
:{fun()}
**カスタム関数は3.phpでは
function fun(){
return "hehe";
}
9、テンプレート内の超大域変数使用(templates/4.html):
<li>session :{$smarty.session.name}</li>
<li>get :{$smarty.get.id}</li>
<li>post :{$smarty.post.name}</li>
<li> PI :{$smarty.const.PI}</li>
**もちろん、早めに4.phpで定義するには、次の手順に従います.
$_SESSION['name']="admin";
$_GET['id']=100;
$_POST['name']="yjc";
const PI=3.14;
追加サポート:$_などGET, $_POST,$_COOKIE, $_SERVER, $_ENV and $_SESSIONは、{$smarty.post.get}のような方法で出力できます.小文字10に変更し、テンプレートをconfigs/ディレクトリからプロファイルテンプレートを読み込みます.{config_load file="lang.conf"section="en"}sectionはオプションで、プロファイル接尾辞はconf、iniなどの例でプロファイルフォーマット(configs/user.conf)を説明します.
[users]
username=zhangsan
age=22
テンプレートでプロファイル定義を使用する変数のメソッドは、次のとおりです.
{$smarty.config.username} {#username#}
{$smarty.config.age} {#age#}
11、テンプレートに含むファイルは、例えば現在のディレクトリの下menuを含む.html
{include file="menu.html"}
12、テンプレートの中でforeachは配列Smarty 3を遍歴する.0新版使用フォーマット(php原生の基本と同じ):
{foreach $data as $key=>$value}
{$value.name}
{$value.age}
{/foreach}
Smarty3.0旧版との互換性:
{foreach from=$data key="key" item="value"}
{/foreach}
[今日は後に書く]もちろん、データベースに接続して、前に書いたModelを使うことができます.class.phpデータベースの操作類は学生情報管理システムを書く.switchを用いることにより、ThnkPHPコントローラの雛形に似た単一ページdisplayの複数ページを実現することができる.大まかな考え方:
switch($_GET['a']){
case "add"://
$smarty->display("stu/add.html");
break;
case "insert"://
break;
case "edit"://
$smarty->display("stu/edit.html");
break;
case "update"://
break;
case "del"://
break;
case "index":
default://
$s->smarty("stu/index.html");
}
いいと思います.お勧めしてください.