ThinkPHP采用模塊和操作分析
更新時(shí)間:2011年04月18日 00:51:17 作者:
ThinkPHP采用模塊和操作的方式來執(zhí)行,首先,用戶的請(qǐng)求會(huì)通過入口文件生成一個(gè)應(yīng)用實(shí)例,應(yīng)用控制器(我們稱之為核心控制器)會(huì)管理整個(gè)用戶執(zhí)行的過程,并負(fù)責(zé)模塊的調(diào)度和操作的執(zhí)行,并且在最后銷毀該應(yīng)用實(shí)例。
任何一個(gè)WEB行為都可以認(rèn)為是一個(gè)模塊的某個(gè)操作,系統(tǒng)會(huì)根據(jù)當(dāng)前的URL來分析要執(zhí)行的模塊和操作。這個(gè)分析工作由URL調(diào)度器來實(shí)現(xiàn),官方內(nèi)置了Dispatcher類來完成該調(diào)度。 在Dispatcher調(diào)度器中,會(huì)根據(jù)
http://servername/appName/moduleName/actionName/params
來獲取當(dāng)前需要執(zhí)行的項(xiàng)目(appName)、 模塊(moduleName)和操作(actionName),在某些情況下,appName可以不需要(通常是網(wǎng)站的首頁,因?yàn)轫?xiàng)目名稱可以在入口文件 中指定,這種情況下,appName就會(huì)被入口文件替代)。在復(fù)雜一點(diǎn)的情況下面,可能還會(huì)出現(xiàn)分組(groupName)。
每個(gè)模塊是一個(gè)Action文件,類似于我們平常所說的控制器,系統(tǒng)會(huì)自動(dòng)尋找項(xiàng)目類庫Action目錄下面的相關(guān)類,如果沒有找到,則會(huì)定位到空模塊,否則拋出異常。
而actionName操作是首先判斷是否存在Action類的公共方法,如果不存在則會(huì)繼續(xù)尋找父類中的方法,如果依然不存在,就會(huì)尋找是否存在自動(dòng)匹配的模版文件。如果存在模版文件,那么就直接渲染模版輸出。
因此應(yīng)用開發(fā)中的一個(gè)重要過程就是給不同的模塊定義具體的操作。一個(gè)應(yīng)用如果不需要和數(shù)據(jù)庫交互的時(shí)候可以不需要定義模型類,但是必須定義Action控制器。 Action控制器的定義非常簡(jiǎn)單,只要繼承Action基礎(chǔ)類就可以了,例如:microfiber cloth
class UserAction extends Action{
}
如果我們要執(zhí)行下面的URL
http://servername/index.php/User/add
你需要增加一個(gè)add方法就可以了,例如
折疊PHP Code復(fù)制內(nèi)容到剪貼板
class UserAction extends Action{
// 定義一個(gè)add操作方法,注意操作方法不需要任何參數(shù)
Public function add(){
// add操作方法的邏輯實(shí)現(xiàn)
// …… bath rug
$this->display(); // 輸出模板頁面
}
}
操作方法必須定義為Public類型,否則會(huì)報(bào)錯(cuò)。并注意操作方法的命名不要和內(nèi)置的Action類的方法重復(fù)。系統(tǒng)會(huì)自動(dòng)定位當(dāng)前操作的模板文件,而默認(rèn)的模板文件應(yīng)該位于項(xiàng)目目錄下面的Tpl\default\User\add.html。
http://servername/appName/moduleName/actionName/params
來獲取當(dāng)前需要執(zhí)行的項(xiàng)目(appName)、 模塊(moduleName)和操作(actionName),在某些情況下,appName可以不需要(通常是網(wǎng)站的首頁,因?yàn)轫?xiàng)目名稱可以在入口文件 中指定,這種情況下,appName就會(huì)被入口文件替代)。在復(fù)雜一點(diǎn)的情況下面,可能還會(huì)出現(xiàn)分組(groupName)。
每個(gè)模塊是一個(gè)Action文件,類似于我們平常所說的控制器,系統(tǒng)會(huì)自動(dòng)尋找項(xiàng)目類庫Action目錄下面的相關(guān)類,如果沒有找到,則會(huì)定位到空模塊,否則拋出異常。
而actionName操作是首先判斷是否存在Action類的公共方法,如果不存在則會(huì)繼續(xù)尋找父類中的方法,如果依然不存在,就會(huì)尋找是否存在自動(dòng)匹配的模版文件。如果存在模版文件,那么就直接渲染模版輸出。
因此應(yīng)用開發(fā)中的一個(gè)重要過程就是給不同的模塊定義具體的操作。一個(gè)應(yīng)用如果不需要和數(shù)據(jù)庫交互的時(shí)候可以不需要定義模型類,但是必須定義Action控制器。 Action控制器的定義非常簡(jiǎn)單,只要繼承Action基礎(chǔ)類就可以了,例如:microfiber cloth
復(fù)制代碼 代碼如下:
class UserAction extends Action{
}
如果我們要執(zhí)行下面的URL
http://servername/index.php/User/add
你需要增加一個(gè)add方法就可以了,例如
折疊PHP Code復(fù)制內(nèi)容到剪貼板
復(fù)制代碼 代碼如下:
class UserAction extends Action{
// 定義一個(gè)add操作方法,注意操作方法不需要任何參數(shù)
Public function add(){
// add操作方法的邏輯實(shí)現(xiàn)
// …… bath rug
$this->display(); // 輸出模板頁面
}
}
操作方法必須定義為Public類型,否則會(huì)報(bào)錯(cuò)。并注意操作方法的命名不要和內(nèi)置的Action類的方法重復(fù)。系統(tǒng)會(huì)自動(dòng)定位當(dāng)前操作的模板文件,而默認(rèn)的模板文件應(yīng)該位于項(xiàng)目目錄下面的Tpl\default\User\add.html。
您可能感興趣的文章:
- thinkphp3.2實(shí)現(xiàn)跨控制器調(diào)用其他模塊的方法
- thinkphp隱藏index.php/home并允許訪問其他模塊的實(shí)現(xiàn)方法
- thinkphp中空模板與空模塊的用法實(shí)例
- ThinkPHP中URL路徑訪問與模塊控制器之間的關(guān)系
- ThinkPHP空模塊和空操作詳解
- ThinkPHP實(shí)現(xiàn)跨模塊調(diào)用操作方法概述
- ThinkPHP訪問不存在的模塊跳轉(zhuǎn)到404頁面的方法
- 解密ThinkPHP3.1.2版本之模塊和操作映射
- ThinkPHP寫第一個(gè)模塊應(yīng)用
- thinkPHP5.0框架命名空間詳解
- thinkPHP5.0框架自動(dòng)加載機(jī)制分析
- thinkPHP5.0框架引入Traits功能實(shí)例分析
- thinkPHP5.0框架模塊設(shè)計(jì)詳解
相關(guān)文章
dedecms后臺(tái)驗(yàn)證碼總提示錯(cuò)誤的解決方法
dedecms后臺(tái)驗(yàn)證碼總提示錯(cuò)誤的解決方法...2007-03-03php實(shí)現(xiàn)微信公眾號(hào)主動(dòng)推送消息
這篇文章主要介紹了php實(shí)現(xiàn)微信公眾號(hào)主動(dòng)推送消息的方法,PHP版微信公共平臺(tái)消息主動(dòng)推送,突破訂閱號(hào)一天只能發(fā)送一條信息限制,需要的朋友可以參考下2015-12-12為你總結(jié)一些php系統(tǒng)類函數(shù)
這篇文章是小編為大家總結(jié)的一些php系統(tǒng)類函數(shù),很實(shí)用,需要的朋友千萬不要錯(cuò)過。2015-10-10淺談ThinkPHP5.0版本和ThinkPHP3.2版本的區(qū)別
小編小編就為大家?guī)硪黄獪\談ThinkPHP5.0版本和ThinkPHP3.2版本的區(qū)別。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06php switch語句多個(gè)值匹配同一代碼塊的實(shí)現(xiàn)
switch 語句一行接一行地執(zhí)行(實(shí)際上是語句接語句),下面為大家介紹下php switch語句多個(gè)值匹配同一代碼塊2014-03-03