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()函數會讀取配置變量信息(convertion.php config.php) 2.在config.php里邊修改smarty的參數信息
3.smarty布局繼承效果
布局繼承 extends block
{extends file="public/layout.html"}
{block name="main"} 4.模板包含
{include file=”public/ucenterleft.html”}
5.display()顯示具體模板
smarty?>display(模板名稱);ThinkPHP框架調用模板:①this -> display(); tp框架會自動把摸板名稱給拼裝好,與操作名一致
② this?>display(模板名);調用當前模塊下的指定模板,模板沒有后綴名③this -> display(模塊/模板名); 調用其他模塊下額指定模板
④ $this -> display(相對路徑模板); 了解
引入機制import
include() require
通過import引入對應的類文件
import(“hello.world.apple”); hello/world/apple.class.php
1.都可以引入什么地方的類文件
a)本項目的類文件可以引入 import(“@.dir.dir.file”);
i.對應的類文件都需要創建在shop/Lib/XXX目錄下邊
b)ThinkPHP核心類文件可以引入 import(“think.dir.dir.file”)
i.對應類文件都設置在ThinkPHP/Lib/XXX
c)ThinkPHP/Extend 擴展庫類文件可以引入 import(“ORG.dir.dir.file”);
i.對應的類文件在ThinkPHP/Extend/Library/ORG/XXX
d)特殊類引入,#號使用
登陸功能
產生驗證碼
//生成驗證碼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']); 分頁實現
function showlist(){$goods_model = D("Goods");//1 引入分頁類import("@.components.Page");//2 計算當前記錄總數目$total = $goods_model -> count();$per = 5;//3. 實例化分頁類對象$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();} 緩存使用
緩存:把數據庫中的信息獲取出來,放到一個緩沖介質里邊,在相當一段時間之內,重復的數據就去緩存里邊讀取。
緩存介質:內存、file文件、數據庫
不同的緩存介質,操作的方式不一樣
具體使用
function s1(){//緩存設置//緩存時間默認是永久的,可以設置S("username","linken");S("age",25);S("address","北京".time(),10); //過期自動刪除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. 如果緩存里邊有商品信息,直接返回,// 否則去數據庫獲得數據,并生成緩存供下次調用if(!empty($goods)){return $goods;} else {$goods = "apple".time(); //從數據獲得商品信息//再把信息放入緩存,供下次調用S("info",$goods,10);return $goods;}} 多語言設置
1.進行多語言配置config.php
//配置多語言參數'LANG_SWITCH_ON' => true, // 默認關閉語言包功能'LANG_AUTO_DETECT' => true, // 自動偵測語言 開啟多語言功能后有效'LANG_LIST' => 'zh-cn,zh-tw,en-us', // 允許切換的語言列表 用逗號分隔'VAR_LANGUAGE' => 'hl', // 默認語言切換變量 2.配置行為Behavior執行
<?phpreturn array('app_begin' => array(//以下行為會一次執行,自動加載機制會引入對應的文件'ReadHtmlCache','CheckLang' // 讀取靜態緩存),
); 3.具體語言文件設置:
4.具體語言使用
$this -> assign(‘language’,L());
自動完成
收集表單信息,把數據存入數據庫
可以使用”自動完成”機制對即將入庫的信息進行二次處理
例如:密碼加密、用戶注冊時間等等。
自動完成 類似 表單驗證
表單驗證在create()方法內部觸發
自動完成 也在create()方法內部觸發
//自動完成處理// 自動完成定義protected $_auto = array(//array(填充字段,填充內容,[填充條件,附加規則])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'),); 自動映射
/進行自動映射,把一個假的表單域名稱 與 真實的數據表字段名稱對應起來// 字段映射定義protected $_map = array('email' => 'user_email','qq' => 'user_qq',); 面向切面編程
程序開發、執行不同的環節、不同的功能利用不同的文件進行處理。
把一個大塊的功能切割為小塊進行開發、執行
轉載于:https://www.cnblogs.com/jjx2013/p/6223585.html
總結
以上是生活随笔為你收集整理的ThinkPHP入门(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 乌镇门票优惠政策
- 下一篇: day13 paramiko、数据库表操