ThinkPHP入门(二)
smarty使用
smarty引入流程
1. 控制器IndexAction.class.phpfunction index()$this -> display(); (父類Action的display)
2. 父類ThinkPHP/Lib/Core/Action.class.phpfunction display()$this->view->display
3. ThinkPHP/Lib/Core/View.class.phpfunction display()$this->fetch()function fetch()tag('view_parse',$params);ThinkPHP/Conf/tags.phpview_parse => parseTemplate(Behavior行為)
4. 行為ThinkPHP/Lib/Behavior/parseTempateBehavior.class.phpfunction run()$class = "TemplateSmarty";$tpl = new $class$tpl -> fetch()
5. TemplateSmarty.class.phpThinkPHP/Extend/Driver/Template/TemplateSmarty.class.phpfunction fetch()vendor('Smarty.Smarty#class');//ThinkPHP/Extend/Vendor/Smarty/Smarty.class.php獲取真正的smartynew Smarty();C()函數(shù)會(huì)讀取配置變量信息(convertion.php  config.php) 2.在config.php里邊修改smarty的參數(shù)信息 
 3.smarty布局繼承效果 
 布局繼承 extends block 
{extends file="public/layout.html"}
{block name="main"} 4.模板包含 
 {include file=”public/ucenterleft.html”} 
5.display()顯示具體模板 
smarty?>display(模板名稱);ThinkPHP框架調(diào)用模板:①this -> display(); tp框架會(huì)自動(dòng)把摸板名稱給拼裝好,與操作名一致 
 ② this?>display(模板名);調(diào)用當(dāng)前模塊下的指定模板,模板沒有后綴名③this -> display(模塊/模板名); 調(diào)用其他模塊下額指定模板 
 ④ $this -> display(相對路徑模板); 了解 
引入機(jī)制import
include() require 
 通過import引入對應(yīng)的類文件 
 import(“hello.world.apple”); hello/world/apple.class.php 
 1.都可以引入什么地方的類文件 
 a)本項(xiàng)目的類文件可以引入 import(“@.dir.dir.file”); 
 i.對應(yīng)的類文件都需要?jiǎng)?chuàng)建在shop/Lib/XXX目錄下邊 
 b)ThinkPHP核心類文件可以引入 import(“think.dir.dir.file”) 
 i.對應(yīng)類文件都設(shè)置在ThinkPHP/Lib/XXX 
 c)ThinkPHP/Extend 擴(kuò)展庫類文件可以引入 import(“ORG.dir.dir.file”); 
 i.對應(yīng)的類文件在ThinkPHP/Extend/Library/ORG/XXX 
 d)特殊類引入,#號(hào)使用 
登陸功能
產(chǎn)生驗(yàn)證碼
 //生成驗(yàn)證碼function verifyImg(){import("ORG.Util.Image");echo Image::buildImageVerify();} session操作
 //持久化用戶信息(id和名字)
session("mg_name",$user_info['mg_name']);
session("mg_id",$user_info['mg_id']); 分頁實(shí)現(xiàn)
function showlist(){$goods_model = D("Goods");//1 引入分頁類import("@.components.Page");//2 計(jì)算當(dāng)前記錄總數(shù)目$total = $goods_model -> count();$per = 5;//3. 實(shí)例化分頁類對象$page = new Page($total,$per);//4. 制作一條sql語句獲得每頁信息$sql = "select * from sw_goods ".$page->limit;$info = $goods_model -> query($sql);//5. 獲得頁面列表$page_list = $page->fpage(array(3,4,5,6,7,8));$this -> assign('info',$info);$this -> assign('page_list',$page_list);$this -> display();} 緩存使用
緩存:把數(shù)據(jù)庫中的信息獲取出來,放到一個(gè)緩沖介質(zhì)里邊,在相當(dāng)一段時(shí)間之內(nèi),重復(fù)的數(shù)據(jù)就去緩存里邊讀取。
緩存介質(zhì):內(nèi)存、file文件、數(shù)據(jù)庫
不同的緩存介質(zhì),操作的方式不一樣
具體使用
 function s1(){//緩存設(shè)置//緩存時(shí)間默認(rèn)是永久的,可以設(shè)置S("username","linken");S("age",25);S("address","北京".time(),10); //過期自動(dòng)刪除S("goods_info",array('one'=>'apple','two'=>'htc','three'=>'nokia'));echo "ok ,success";}function s2(){//讀取緩存信息echo S('username')."<br />";echo S('age')."<br />";echo S('address')."<br />";print_r(S("goods_info"));} 緩存案例
 //獲取商品信息function getInfo(){//1 首先去緩存里邊獲得商品信息$goods = S("info");//2. 如果緩存里邊有商品信息,直接返回,//   否則去數(shù)據(jù)庫獲得數(shù)據(jù),并生成緩存供下次調(diào)用if(!empty($goods)){return $goods;} else {$goods = "apple".time();  //從數(shù)據(jù)獲得商品信息//再把信息放入緩存,供下次調(diào)用S("info",$goods,10);return $goods;}} 多語言設(shè)置
1.進(jìn)行多語言配置config.php
 //配置多語言參數(shù)'LANG_SWITCH_ON'        => true,   // 默認(rèn)關(guān)閉語言包功能'LANG_AUTO_DETECT'      => true,   // 自動(dòng)偵測語言 開啟多語言功能后有效'LANG_LIST'             => 'zh-cn,zh-tw,en-us', // 允許切換的語言列表 用逗號(hào)分隔'VAR_LANGUAGE'          => 'hl',        // 默認(rèn)語言切換變量 2.配置行為Behavior執(zhí)行
<?phpreturn array('app_begin'     =>  array(//以下行為會(huì)一次執(zhí)行,自動(dòng)加載機(jī)制會(huì)引入對應(yīng)的文件'ReadHtmlCache','CheckLang' // 讀取靜態(tài)緩存),
); 3.具體語言文件設(shè)置: 
 4.具體語言使用 
 $this -> assign(‘language’,L());
自動(dòng)完成
收集表單信息,把數(shù)據(jù)存入數(shù)據(jù)庫 
 可以使用”自動(dòng)完成”機(jī)制對即將入庫的信息進(jìn)行二次處理 
 例如:密碼加密、用戶注冊時(shí)間等等。 
自動(dòng)完成 類似 表單驗(yàn)證 
 表單驗(yàn)證在create()方法內(nèi)部觸發(fā) 
 自動(dòng)完成 也在create()方法內(nèi)部觸發(fā) 
 //自動(dòng)完成處理// 自動(dòng)完成定義protected $_auto            =   array(//array(填充字段,填充內(nèi)容,[填充條件,附加規(guī)則])array('password','md5',3,'function'),array('user_time','time',1,'function'),//array('user_time','abc',1,'callback'),//array('user_time','user_qq',1,'field'),//array('user_time','123456789',1,'string'),); 自動(dòng)映射
/進(jìn)行自動(dòng)映射,把一個(gè)假的表單域名稱 與 真實(shí)的數(shù)據(jù)表字段名稱對應(yīng)起來// 字段映射定義protected $_map             =   array('email' => 'user_email','qq'    => 'user_qq',);   面向切面編程
程序開發(fā)、執(zhí)行不同的環(huán)節(jié)、不同的功能利用不同的文件進(jìn)行處理。 
 把一個(gè)大塊的功能切割為小塊進(jìn)行開發(fā)、執(zhí)行
轉(zhuǎn)載于:https://www.cnblogs.com/jjx2013/p/6223585.html
總結(jié)
以上是生活随笔為你收集整理的ThinkPHP入门(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 乌镇门票优惠政策
 - 下一篇: 雪莉实验机一天是28号结束,还是28号是