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'] = '[email protected]'; $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是什麼模式的詳細內容,更多請關注TW511.COM其它相關文章!