您好,登錄后才能下訂單哦!
這篇文章主要介紹“thinkphp基于什么模式”,在日常操作中,相信很多人在thinkphp基于什么模式問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”thinkphp基于什么模式”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
thinkphp是mvc模式。ThinkPHP基于MVC模式,并且均支持多層(multi-Layer)設計,是一個為了簡化企業級應用開發和敏捷WEB應用開發而誕生的開源輕量級PHP框架。
本教程操作環境:Windows7系統、thinkphp v5.1版、Dell G3電腦。
ThinkPHP基于MVC模式,并且均支持多層(multi-Layer)設計。
ThinkPHP是一個快速、兼容而且簡單的輕量級國產PHP開發框架,誕生于2006年初,原名FCS,2007年元旦正式更名為ThinkPHP,遵循Apache2開源協議發布,從Struts結構移植過來并做了改進和完善,同時也借鑒了國外很多優秀的框架和模式,使用面向對象的開發結構和MVC模式,融合了Struts的思想和TagLib(標簽庫)、RoR的ORM映射和ActiveRecord模式。
M(model)– 模型類
模型
在ThinkPHP中基礎的模型類就是Think\Model 類,該類完成了基本的CURD、ActiveRecord模式、連貫操作和統計查詢,一些高級特性被封裝到另外的模型擴展中。
注意: 基礎模型類的設計非常靈活,甚至可以無需進行任何模型定義,就可以進行相關數據表的ORM和CURD操作,只有在需要封裝單獨的業務邏輯的時候,模型類才是必須被定義的。
模型定義
模型類并非必須定義,只有當存在獨立的業務邏輯或者屬性的時候才需要定義。
模型類通常需要繼承系統的\Think\Model類或其子類,下面是一個Home\Model\UserModel類的定義:
namespace Home\Model; use Think\Model; class UserModel extends Model{ }
模型類的作用大多數情況是操作數據庫,按照系統的規范來命名模型類的話,大多數情況下是可以自動對應數據表的。
模型名 | 約定對應數據表(假設數據表的前綴定義是think_) |
---|---|
UserModel | think_user |
UserTypeModel | think_user_type |
V(view)– 視圖層
模板定義
每個模塊的模塊文件是獨立的,為了對模塊文件更加有效的管理,ThinkPHP對模塊文件進行目錄劃分,默認的模板文件定義規則是:
視圖目錄/[模塊主題/]'控制器名/操作名/操作名+模板后綴
默認的視圖目錄是模塊的View目錄(模塊可以有多個視圖文件目錄),框架的默認視圖文件后綴是.html
。
在每個模塊主題下面,是以模塊下面的控制器名為目錄,然后是每個控制器的具體操作模板文件,如:
User控制器的add操作 對應的模塊文件就應該是: ./Application/Home/View/User/add.html
如果默認視圖層不是View,設置如: 'DEFAULT_V_LAYER'=>'Template',//設置默認的視圖層名稱
,對應的模板文件就變成了:./Application/Home/Template/User/add.html
。
模板文件的默認后綴是.html
,可以通過TMPL_TEMPLATE_SUFFIX來配置。 'TMPL_TEMPLATE_SUFFIX'=>'.tpl'
定義后,User控制器的add操作 對應的模板文件就變成是:./Application/Home/View/User/add.tpl
模板主題
模板主題可以對相同的控制器輸出進行不同的布局和樣式調整
一個模塊需要支持多套模板文件的話,就可以使用模板主題功能。默認情況下,沒有開啟模板主題功能,如果需要開啟,設置DEFAULT_THEME參數即可:
// 設置默認的模板主題
'DEFAULT_THEME'=>'default'
采用模板主題后,需要在視圖目錄下面創建對應的主題目錄,和不啟用模板主題的情況相比,模板文件只是多了一層目錄:
View/User/add.html //沒有啟用模板主題之前 View/default/User/add.html //啟用模板主題之后
在視圖渲染輸出之前,我們可以通過動態設置來改變需要使用的模板主題。
//在控制器中動態改變模板主題 $this->theme('blue')->display('add');
模板賦值
如果要在模板中輸出變量,必須在控制器中把變量傳遞給模板,通過assign方法對模板變量賦值
$this->assign('name',$value);//下面的寫法是等效的 $this->name=$value;
assign方法必須在display
和show方法
之前調用,并且系統只會輸出設定的變量,其他變量不會輸出(系統變量例外)。
系統變量可以通過特殊的標簽輸出,無需賦值模板變量
賦值后,就可以在模板文件中輸出變量,如果使用的是內置模板的話,就可以這樣輸出:{$name}
輸出多個模板變量,可以使用下面的方式:
$array['name'] = 'thinkphp'; $array['email'] = 'fdsf@123.com'; $array['phone'] = '123456789'; $this->assign($array);
模板渲染
模板定義后就可以渲染模板輸出,系統也支持直接渲染內容輸出,模板賦值必須在模板渲染之前操作。
渲染模板輸出最常用的是使用display方法,調用格式: display('[模板文件]'[,'字符編碼'][,'輸出類型'])
模板文件的寫法支持下面幾種:
用法 | 描述 |
---|---|
不帶任何參數 | 自動定位當前操作的模板文件 |
[模塊@][控制器:][操作] | 常用寫法,支持跨模塊 模板主題可以和theme方法配合 |
完整的模板文件名 | 直接使用完整的模板文件名(包括模板后綴) |
eg.
//不帶任何參數 自動定位當前操作的模板文件 $this->display();
通常默認的視圖目錄是View
如果沒有按照模板定義的規則來定義模板文件(或者需要調用其他控制器下面的某個模板),使用:
//表示調用當前控制器下面的edit模塊 $this->display('edit'); //表示調用Member控制器下面的read模塊 $this->display('Member:read');
如果我們使用了模板主題功能,那么也可以支持主題調用,使用:
\\表示調用blue主題下面的User控制器的edit模塊 $this->theme('blue')->display('User:edit');
獲取模板地址
T函數用于生成模板文件名,用法: T([資源://][模塊@][主題/][控制器/]操作,[視圖分層])
T函數的返回值為一個完整的模板文件名,可以直接用于display和fetch方法進行渲染輸出。
eg.
T('Public/menu'); //返回 當前模塊/View/Public/menu.html T('blue/Public/menu'); //返回 當前模塊/View/blue/Public/menu.html T('Public/menu','Tpl'); //返回 當前模塊/Tpl/Public/menu.html T('Admin@Public/menu'); //返回 Admin/View/Public/menu.html
在display方法中直接使用T函數
//使用T函數輸出模板 $this->display(T('Admin@Public/menu'));
T函數可以輸出不同的視圖分層模塊。
如果需要獲取渲染模板的輸出內容而不是直接輸出,可以使用fetch方法。
eg. $content = $this->fetch('Member:edit');
使用fetch方法獲取渲染內容后,可以進行過濾和替換等操作。
如果沒有定義任何模板文件,或者把模板內容存儲到數據庫的話,就需要使用show方法來渲染輸出。
show方法調用格式:
show(‘渲染內容’[,’字符編碼’][,’輸出類型’])
eg.$this->show($content);
到此,關于“thinkphp基于什么模式”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。