程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> ThinkPHP控制器模塊和操作

ThinkPHP控制器模塊和操作

編輯:關於PHP編程

        ThinkPHP采用模塊和操作的方式來執行,首先,用戶的請求會通過入口文件生成一個應用實例,應用控制器(我們稱之為核心控制器)會管理整個用戶執行的過程,並負責模塊的調度和操作的執行,並且在最後銷毀該應用實例。任何一個WEB行為都可以認為是一個模塊的某個操作,系統會根據當前的URL來分析要執行的模塊和操作。這個分析工作由URL調度器來實現,官方內置了Dispatcher類來完成該調度。 在Dispatcher調度器中,會根據

http://servername/appName/moduleName/actionName/params

來獲取當前需要執行的項目(appName)、模塊(moduleName)和操作(actionName),在某些情況下,appName可以不需要(通常是網站的首頁,因為項目名稱可以在入口文件中指定,這種情況下,appName就會被入口文件替代)。在復雜一點的情況下面,可能還會出現分組(groupName)。

        每個模塊是一個Action文件,類似於我們平常所說的控制器,系統會自動尋找項目類庫Action目錄下面的相關類,如果沒有找到,則會定位到空模塊,否則拋出異常。

        而actionName操作是首先判斷是否存在Action類的公共方法,如果不存在則會繼續尋找父類中的方法,如果依然不存在,就會尋找是否存在自動匹配的模版文件。如果存在模版文件,那麼就直接渲染模版輸出。

        因此應用開發中的一個重要過程就是給不同的模塊定義具體的操作。一個應用如果不需要和數據庫交互的時候可以不需要定義模型類,但是必須定義Action控制器。 Action控制器的定義非常簡單,只要繼承Action基礎類就可以了,例如:

折疊展開PHP Code復制內容到剪貼板
  1. class UserAction extends Action{   
  2.   
  3. }  

如果我們要執行下面的URL

http://servername/index.php/User/add

你需要增加一個add方法就可以了,例如

折疊展開PHP Code復制內容到剪貼板
  1. class UserAction extends Action{   
  2.   
  3.   // 定義一個add操作方法,注意操作方法不需要任何參數   
  4.   
  5.   Public function add(){   
  6.   
  7.    // add操作方法的邏輯實現   
  8.   
  9.    // ……   
  10.   
  11.    $this->display(); // 輸出模板頁面   
  12.   
  13. }   
  14.   
  15. }   
  16.   

操作方法必須定義為Public類型,否則會報錯。並注意操作方法的命名不要和內置的Action類的方法重復。系統會自動定位當前操作的模板文件,而默認的模板文件應該位於項目目錄下面的Tpl\default\User\add.html。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved