thinkphp是什麼模式

2022-02-14 19:01:00

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_)
UserModelthink_user
UserTypeModelthink_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方法必須在displayshow方法之前呼叫,並且系統只會輸出設定的變數,其他變數不會輸出(系統變數例外)。

系統變數可以通過特殊的標籤輸出,無需賦值模板變數

賦值後,就可以在模板檔案中輸出變數,如果使用的是內建模板的話,就可以這樣輸出:{$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其它相關文章!