18禁美女裸体无遮挡APP,色夜AV在线,污污污的自慰喷水站,久久国产精品亚洲影院院,飘雪BD在线观看,8x福利精品第一福利视频导航,正在播放二级大黄大片,天天日天天操天天干,尤物影视大全,网红尤物资源在线观看

架構總覽

ThinkPHP應用基于MVC(模型-視圖-控制器)的(de)方式來組織。

MVC是(shi)一(yi)個(ge)設計模式,它強制性的使(shi)應(ying)用程序的輸(shu)入、處理和輸(shu)出(chu)分(fen)開。使(shi)用MVC應(ying)用程序被分(fen)成三個(ge)核(he)心部件:模型(M)、視圖(tu)(V)、控制器(C),它們(men)各自處理自己的任務。

5.0的URL訪(fang)問受路(lu)由決定(ding),如果關閉路(lu)由或者沒有匹(pi)配路(lu)由的情(qing)況下,則(ze)是基(ji)于:

//serverName/index.php(或者其它應用入口文件)/模塊/控制器/操作/參數/值…

下面的一些概(gai)念(nian)有必要做下了解(jie),可能在后面的內容中經常會被提及。

入口文件

用戶請求的PHP文件,負責處理一個請求(注意,不一定是URL請求)的生命周期,最常見的入口文件就是index.php,有時候也會為了某些特殊的需求而增加新的入口文件,例如給后臺模塊單獨設置的一個入口文件admin.php或者一個控制器程序入口think都屬于入口文件。

應用

應用在ThinkPHP中是一個管理系統架構及生命周期的對象,由系統的 \think\App類完成,應用通常在入口文件中被調用和執行,具有相同的應用目錄(APP_PATH)的(de)應用我們(men)認為是(shi)同一個應用,但一個應用可能存在多個入口文件。

應用(yong)具(ju)有自己獨立(li)的配置文(wen)(wen)件(jian)、公(gong)共(函數)文(wen)(wen)件(jian)。

模塊

一(yi)(yi)個(ge)典(dian)型的(de)(de)應用是由多個(ge)模塊組(zu)成的(de)(de),這些(xie)模塊通(tong)常都是應用目(mu)錄下面的(de)(de)一(yi)(yi)個(ge)子目(mu)錄,每個(ge)模塊都有(you)自(zi)己獨立的(de)(de)配置文件、公共文件和(he)類(lei)庫文件。

5.0支持單(dan)一(yi)模(mo)(mo)塊架構設計,如果你的(de)應用(yong)下面只有(you)一(yi)個(ge)模(mo)(mo)塊,那么這個(ge)模(mo)(mo)塊的(de)子目錄可以省略,并且在應用(yong)配置文件中(zhong)修改:

'app_multi_module' =>	false,

控制器

每個模塊擁有獨立的MVC類(lei)(lei)庫及配(pei)置文件(jian),一個(ge)模(mo)塊下(xia)面有多個(ge)控(kong)制(zhi)器(qi)負(fu)責響應請求(qiu),而每個(ge)控(kong)制(zhi)器(qi)其實就是一個(ge)獨(du)立的控(kong)制(zhi)器(qi)類(lei)(lei)。

控制器(qi)主(zhu)要負責請(qing)求的(de)(de)接收,并調用(yong)相關的(de)(de)模型處理(li),并最終通過視圖輸出。嚴格來(lai)說,控制器(qi)不(bu)應該過多的(de)(de)介入業(ye)務邏輯處理(li)。

事實(shi)上(shang),5.0中控制(zhi)器(qi)是可以(yi)被跳過的,通過路由我(wo)們可以(yi)直接把請求調度(du)到某個模型(xing)或(huo)者其(qi)他的類(lei)進(jin)行(xing)處(chu)理。

 5.0的(de)控(kong)制器類比較靈活,可以無(wu)需繼承(cheng)任何基礎類庫。

一個典型的Index控制器類如下:

namespace app\index\controller;

class Index 
{
    public function index()
    {
        return 'hello,ThinkPHP!';
    }
}

操作

一(yi)個(ge)(ge)控(kong)制器包(bao)含多個(ge)(ge)操(cao)作(zuo)(方(fang)法(fa)),操(cao)作(zuo)方(fang)法(fa)是一(yi)個(ge)(ge)URL訪問的最小單元。

下面是一個典型的Index控制器(qi)的操作方(fang)法定義,包含了兩個操作方(fang)法:

namespace app\index\controller;

class Index 
{
    public function index()
    {
        return 'index';
    }
    
    public function hello($name)
    {
        return 'Hello,'.$name;
    }
}

操作方法可以不使用任何參數,如果定義了一個非可選參數,則該參數必須通過用戶請求傳入,如果是URL請求,則通常是$_GET或者$_POST方式傳入。

模型

模型類通(tong)常(chang)完成實際的業務邏輯和數據封裝,并返回和格式無關(guan)的數據。

模型類并不一定要訪問數據庫,而且在5.0的架構設計中,只有進行實際的數據庫查詢操作的時候,才會進行數據庫的連接,是真正的惰性連接。
ThinkPHP的模型(xing)層(ceng)支持多層(ceng)設計,你可以對模型(xing)層(ceng)進(jin)行更細化的設計和分(fen)工,例如把模型(xing)層(ceng)分(fen)為(wei)邏輯層(ceng)/服務層(ceng)/事件層(ceng)等等。

視圖

控制器調(diao)用(yong)(yong)模型(xing)類后返(fan)回的(de)數(shu)據通過視圖(tu)(tu)組裝(zhuang)成不同格(ge)式(shi)的(de)輸(shu)出(chu)。視圖(tu)(tu)根據不同的(de)需求,來決定調(diao)用(yong)(yong)模板引擎進行(xing)內容解析后輸(shu)出(chu)還是直接(jie)輸(shu)出(chu)。

視圖通(tong)常會有(you)一系(xi)列的模板(ban)文件對應不(bu)同的控制器和(he)操作方(fang)法,并(bing)且(qie)支持動態設置模板(ban)目錄。

驅動

系統很多(duo)的(de)組件都采用(yong)驅動(dong)(dong)式設計,從而(er)可(ke)以(yi)更靈活的(de)擴展,驅動(dong)(dong)類(lei)的(de)位置默(mo)認(ren)是放入核心類(lei)庫(ku)目錄下面,也(ye)可(ke)以(yi)重(zhong)新(xin)定義驅動(dong)(dong)類(lei)庫(ku)的(de)命名空間(jian)而(er)改變驅動(dong)(dong)的(de)文件位置。

行為

行為(Behavior)是在預先定義好的一個應用位置執行的一些操作。類似于AOP編程中的“切面”的概念,給某一個切面綁定相關行為就成了一種類AOP編程的思(si)想。所以(yi),行(xing)為(wei)通常是和(he)某(mou)個(ge)位置相關,行(xing)為(wei)的執行(xing)時(shi)間依賴(lai)于綁定到了哪個(ge)位置上。

要執行行為(wei)(wei),首(shou)先要在應(ying)用(yong)程序中進行行為(wei)(wei)偵聽(ting),例如(ru):

// 在(zai)app_init位置偵聽行為
\think\Hook::listen('app_init');

然后對某個位置(zhi)進行行為綁定(ding):

// 綁定行為到app_init位置
\think\Hook::add('app_init','\app\index\behavior\Test');

一個位置上(shang)如果綁定了多個行為的,按照綁定的順(shun)序依(yi)次(ci)執(zhi)行,除(chu)非遇到中斷。

命名空間

ThinkPHP采用了PHP的命名空間進行類庫文件的設計和規劃,并且符合PSR-4的自動加載規范。

文檔最后更新時間:2018-04-25 15:57:37

文檔
目錄

深色
模式

切換
寬度