- ThinkPHP實戰
- 夏磊
- 296字
- 2020-11-28 18:26:53
4.1 控制器的定義
ThinkPHP控制器的定義非常簡單,滿足以下兩個條件即可:
(1)文件名形如“xxxController.class.php”并存放于“模塊/Controller”文件夾下;
(2)繼承ThinkPHP的Controller及其子類(有時候我們需要擴展一些公用方法,但又不能改動框架,所以需要子類去繼承系統的Controller,以該子類作為新的Controller父類)。
而定義動作只需要在控制器中定義公共方法即可,在Web目錄下新建chapter-4文件夾,新建入口文件并完成初始化。
在Application/Home/Controller下新建TestController.class.php,內容如下:
<? php /** * TestController.class.php */ namespace Home\Controller; use Think\Controller; class TestController extends Controller { public function test() { echo ’您訪問了home/test/test'; } }
打開瀏覽器,訪問http://localhost/thinkphp-inaction/chapter-4/home/test/test,可以看到瀏覽器輸出了“您訪問了home/test/test”。看到這么長的URL,有些讀者可能會有點不知所措,實際上,簡要地分析一下就很簡單了。
● localhost:主機名
● thinkphp-inaction:ApacheWeb目錄下的一個子目錄
● chapter-4:thinkphp-inaction的子目錄
● home:模塊名
● 第一個test:控制器名
● 第二個test:動作名
幾乎所有的ThinkPHP框架的鏈接都可以采用這種方式去分析。
如果我們試著訪問“http://localhost/thinkphp-inaction/chapter-4/home/test”,瀏覽器會輸出“非法操作:index”的字樣,原因是ThinkPHP在檢測到未輸入動作名時,自動使用控制器的“index”方法作為動作名,但是TestController未定義index方法,所以報錯,添加index方法后就可以正常訪問了。
動作的定義上文已經提到過,一個public的方法就是一個可以被瀏覽器訪問到的動作,方法名即動作名,但是請注意到下面這個URL:“http://localhost/thinkphp-inaction/chapter-4/home/test/list”,如果按照上文提到的在TestController中添加“public function list()”,編輯器會直接報錯,因為“list”是PHP關鍵字,遇到這種情況的時候就需要配置“操作方法后綴”了。
編輯Application/Home/Conf/config.php,內容如下:
<? php /** * config.php */ return array( 'ACTION_SUFFIX' => 'Action', // 操作方法后綴 );
“ACTION_SUFFIX”就是操作后綴的配置項名稱,接下來編輯Application/Home/Controller/TestController.class.php,內容如下:
<? php /** * TestController.class.php */ namespace Home\Controller; use Think\Controller; class TestController extends Controller { public function testAction() { echo ’您訪問了home/test/test'; } public function listAction() { echo ’您訪問了home/test/list'; } }
打開瀏覽器訪問“http://localhost/thinkphp-inaction/chapter-4/home/test/list”,可以看到瀏覽器輸出了“您訪問了home/test/list”,證明操作后綴配置成功。
- MySQL 8從入門到精通(視頻教學版)
- 微服務與事件驅動架構
- Windows系統管理與服務配置
- Java Web及其框架技術
- WordPress Plugin Development Cookbook(Second Edition)
- HTML5+CSS3+JavaScript Web開發案例教程(在線實訓版)
- 小程序開發原理與實戰
- Python High Performance Programming
- Node.js開發指南
- 代替VBA!用Python輕松實現Excel編程
- 精通MySQL 8(視頻教學版)
- PostgreSQL Developer's Guide
- Oracle Database XE 11gR2 Jump Start Guide
- Microsoft Dynamics GP 2013 Cookbook
- Google Maps JavaScript API Cookbook