最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

thinkPHP5.0框架整體架構(gòu)總覽【應(yīng)用,模塊,MVC,驅(qū)動(dòng),行為,命名空間等】

 更新時(shí)間:2017年03月25日 11:53:27   作者:chinalorin  
這篇文章主要介紹了thinkPHP5.0框架整體架構(gòu),簡(jiǎn)單介紹了thinkPHP5.0的應(yīng)用,模塊,MVC,驅(qū)動(dòng),行為,命名空間等概念與基本用法,需要的朋友可以參考下

本文講述了thinkPHP5.0框架整體架構(gòu)。分享給大家供大家參考,具體如下:

ThinkPHP5.0應(yīng)用基于MVC(模型-視圖-控制器)的方式來(lái)組織。

MVC是一個(gè)設(shè)計(jì)模式,它強(qiáng)制性的使應(yīng)用程序的輸入、處理和輸出分開(kāi)。使用MVC應(yīng)用程序被分成三個(gè)核心部件:模型(M)、視圖(V)、控制器(C),它們各自處理自己的任務(wù)。

5.0的URL訪(fǎng)問(wèn)受路由決定,如果關(guān)閉路由或者沒(méi)有匹配路由的情況下,則是基于:

http://serverName/index.php(或者其它應(yīng)用入口文件)/模塊/控制器/操作/參數(shù)/值...

下面的一些概念有必要做下了解,可能在后面的內(nèi)容中經(jīng)常會(huì)被提及。

入口文件

用戶(hù)請(qǐng)求的PHP文件,負(fù)責(zé)處理一個(gè)請(qǐng)求(注意,不一定是URL請(qǐng)求)的生命周期,最常見(jiàn)的入口文件就是index.php,有時(shí)候也會(huì)為了某些特殊的需求而增加新的入口文件,例如給后臺(tái)模塊單獨(dú)設(shè)置的一個(gè)入口文件admin.php或者一個(gè)控制器程序入口think都屬于入口文件。

應(yīng)用

應(yīng)用在ThinkPHP中是一個(gè)管理系統(tǒng)架構(gòu)及生命周期的對(duì)象,由系統(tǒng)的 \think\App類(lèi)完成,應(yīng)用通常在入口文件中被調(diào)用和執(zhí)行,具有相同的應(yīng)用目錄(APP_PATH)的應(yīng)用我們認(rèn)為是同一個(gè)應(yīng)用,但一個(gè)應(yīng)用可能存在多個(gè)入口文件。

應(yīng)用具有自己獨(dú)立的配置文件、公共(函數(shù))文件。

模塊

一個(gè)典型的應(yīng)用是由多個(gè)模塊組成的,這些模塊通常都是應(yīng)用目錄下面的一個(gè)子目錄,每個(gè)模塊都自己獨(dú)立的配置文件、公共文件和類(lèi)庫(kù)文件。

5.0支持單一模塊架構(gòu)設(shè)計(jì),如果你的應(yīng)用下面只有一個(gè)模塊,那么這個(gè)模塊的子目錄可以省略,并且在應(yīng)用配置文件中修改

'app_multi_module' =>  false,

控制器

每個(gè)模塊擁有獨(dú)立的MVC類(lèi)庫(kù)及配置文件,一個(gè)模塊下面有多個(gè)控制器負(fù)責(zé)響應(yīng)請(qǐng)求,而每個(gè)控制器其實(shí)就是一個(gè)獨(dú)立的控制器類(lèi)。

控制器主要負(fù)責(zé)請(qǐng)求的接收,并調(diào)用相關(guān)的模型處理,并最終通過(guò)視圖輸出。嚴(yán)格來(lái)說(shuō),控制器不應(yīng)該過(guò)多的介入業(yè)務(wù)邏輯處理。

事實(shí)上,5.0中控制器是可以被跳過(guò)的,通過(guò)路由我們可以直接把請(qǐng)求調(diào)度到某個(gè)模型或者其他的類(lèi)進(jìn)行處理。

5.0的控制器類(lèi)比較靈活,可以無(wú)需繼承任何基礎(chǔ)類(lèi)庫(kù)。

一個(gè)典型的Index控制器類(lèi)如下:

namespace app\index\controller;
class Index 
{
  public function index()
  {
    return 'hello,thinkphp!';
  }
}

操作

一個(gè)控制器包含多個(gè)操作(方法),操作方法是一個(gè)URL訪(fǎng)問(wèn)的最小單元。

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

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

操作方法可以不使用任何參數(shù),如果定義了一個(gè)非可選參數(shù),則該參數(shù)必須通過(guò)用戶(hù)請(qǐng)求傳入,如果是URL請(qǐng)求,則通常是$_GET或者$_POST方式傳入。

模型

模型類(lèi)通常完成實(shí)際的業(yè)務(wù)邏輯和數(shù)據(jù)封裝,并返回和格式無(wú)關(guān)的數(shù)據(jù)。

模型類(lèi)并不一定要訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),而且在5.0的架構(gòu)設(shè)計(jì)中,只有進(jìn)行實(shí)際的數(shù)據(jù)庫(kù)查詢(xún)操作的時(shí)候,才會(huì)進(jìn)行數(shù)據(jù)庫(kù)的連接,是真正的惰性連接。

ThinkPHP的模型層支持多層設(shè)計(jì),你可以對(duì)模型層進(jìn)行更細(xì)化的設(shè)計(jì)和分工,例如把模型層分為邏輯層/服務(wù)層/事件層等等。

視圖

控制器調(diào)用模型類(lèi)后返回的數(shù)據(jù)通過(guò)視圖組裝成不同格式的輸出。視圖根據(jù)不同的需求,來(lái)決定調(diào)用模板引擎進(jìn)行內(nèi)容解析后輸出還是直接輸出。

視圖通常會(huì)有一系列的模板文件對(duì)應(yīng)不同的控制器和操作方法,并且支持動(dòng)態(tài)設(shè)置模板目錄。

驅(qū)動(dòng)

系統(tǒng)很多的組件都采用驅(qū)動(dòng)式設(shè)計(jì),從而可以更靈活的擴(kuò)展,驅(qū)動(dòng)類(lèi)的位置默認(rèn)是放入核心類(lèi)庫(kù)目錄下面,也可以重新定義驅(qū)動(dòng)類(lèi)庫(kù)的命名空間而改變驅(qū)動(dòng)的文件位置。

行為

行為(Behavior)是在預(yù)先定義好的一個(gè)應(yīng)用位置執(zhí)行的一些操作。類(lèi)似于A(yíng)OP編程中的“切面”的概念,給某一個(gè)切面綁定相關(guān)行為就成了一種類(lèi)AOP編程的思想。所以,行為通常是和某個(gè)位置相關(guān),行為的執(zhí)行時(shí)間依賴(lài)于綁定到了哪個(gè)位置上。

要執(zhí)行行為,首先要在應(yīng)用程序中進(jìn)行行為偵聽(tīng),例如:

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

然后對(duì)某個(gè)位置進(jìn)行行為綁定:

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

一個(gè)位置上如果綁定了多個(gè)行為的,按照綁定的順序依次執(zhí)行,除非遇到中斷。

命名空間

ThinkPHP5采用了PHP的命名空間進(jìn)行類(lèi)庫(kù)文件的設(shè)計(jì)和規(guī)劃,并且符合PSR-4的自動(dòng)加載規(guī)范。

更多關(guān)于thinkPHP相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《ThinkPHP入門(mén)教程》、《thinkPHP模板操作技巧總結(jié)》、《ThinkPHP常用方法總結(jié)》、《codeigniter入門(mén)教程》、《CI(CodeIgniter)框架進(jìn)階教程》、《Zend FrameWork框架入門(mén)教程》、《smarty模板入門(mén)基礎(chǔ)教程》及《PHP模板技術(shù)總結(jié)》。

希望本文所述對(duì)大家基于ThinkPHP框架的PHP程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 一段防盜連的PHP代碼

    一段防盜連的PHP代碼

    一段防盜連的PHP代碼...
    2006-12-12
  • PHP中多線(xiàn)程的兩個(gè)實(shí)現(xiàn)方法

    PHP中多線(xiàn)程的兩個(gè)實(shí)現(xiàn)方法

    多線(xiàn)程是java中一個(gè)很不錯(cuò)的東西,很多朋友說(shuō)在php中不可以使用PHP多線(xiàn)程了,其實(shí)那是錯(cuò)誤的說(shuō)法,本文就是介紹PHP中多線(xiàn)程的兩個(gè)實(shí)現(xiàn)方法,有興趣的同學(xué)可以看一下。
    2016-10-10
  • PHP微信開(kāi)發(fā)之查詢(xún)城市天氣

    PHP微信開(kāi)發(fā)之查詢(xún)城市天氣

    這篇文章主要為大家詳細(xì)介紹了PHP微信開(kāi)發(fā)之簡(jiǎn)單實(shí)現(xiàn)查詢(xún)城市天氣的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-06-06
  • php單文件版在線(xiàn)代碼編輯器

    php單文件版在線(xiàn)代碼編輯器

    這篇文章主要介紹了php單文件版在線(xiàn)代碼編輯器,個(gè)人感覺(jué)相當(dāng)不錯(cuò),分享給大家,需要的朋友可以參考下
    2015-03-03
  • codeigniter數(shù)據(jù)庫(kù)操作函數(shù)匯總

    codeigniter數(shù)據(jù)庫(kù)操作函數(shù)匯總

    網(wǎng)上倒是有不少Codeigniter數(shù)據(jù)庫(kù)操作的介紹,這里做一個(gè)匯總,需要的朋友可以參考下
    2014-06-06
  • PHP隱藏手機(jī)號(hào)碼、銀行卡號(hào)、真實(shí)姓名部分內(nèi)容的方法

    PHP隱藏手機(jī)號(hào)碼、銀行卡號(hào)、真實(shí)姓名部分內(nèi)容的方法

    這篇文章主要介紹了PHP隱藏手機(jī)號(hào)碼、銀行卡號(hào)、真實(shí)姓名部分內(nèi)容的方法的實(shí)現(xiàn)代碼,有時(shí)候我們需要將部分內(nèi)容隱藏那么就可能需要下面的代碼了,需要的朋友可以參考下
    2023-11-11
  • Yii框架form表單用法實(shí)例

    Yii框架form表單用法實(shí)例

    這篇文章主要介紹了Yii框架form表單用法,實(shí)例分析了Yii中form表單的實(shí)現(xiàn)方法與相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-12-12
  • php圖片裁剪函數(shù)

    php圖片裁剪函數(shù)

    這篇文章主要為大家詳細(xì)介紹了php圖片裁剪函數(shù),圖片裁剪工具,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • Yii2處理密碼加密及驗(yàn)證的方法

    Yii2處理密碼加密及驗(yàn)證的方法

    這篇文章主要介紹了Yii2處理密碼加密及驗(yàn)證的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-05-05
  • PHP JWT初識(shí)及其簡(jiǎn)單示例

    PHP JWT初識(shí)及其簡(jiǎn)單示例

    這篇文章主要介紹了PHP JWT初識(shí)及其簡(jiǎn)單示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10

最新評(píng)論

信阳市| 普安县| 抚顺市| 雅江县| 荣昌县| 南江县| 鄄城县| 太康县| 岑巩县| 南平市| 萨迦县| 金门县| 南召县| 内丘县| 郴州市| 龙江县| 日土县| 尼木县| 土默特左旗| 喀什市| 罗源县| 扶沟县| 安阳市| 东安县| 彭山县| 浦北县| 湖口县| 怀集县| 茂名市| 郓城县| 长治县| 巴彦淖尔市| 杂多县| 德江县| 华安县| 东乡族自治县| 门源| 沾益县| 保定市| 苏州市| 黄龙县|