官术网_书友最值得收藏!

  • 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”,證明操作后綴配置成功。

主站蜘蛛池模板: 南澳县| 泰和县| 牙克石市| 新闻| 舒城县| 卓资县| 峨山| 秦安县| 皋兰县| 从江县| 永德县| 天峨县| 汝城县| 南昌县| 镇沅| 邛崃市| 张家口市| 浦县| 宁陕县| 天长市| 乌苏市| 许昌县| 普兰县| 巴里| 池州市| 兴山县| 望江县| 耒阳市| 山阳县| 定西市| 山西省| 宜兴市| 新乡县| 遂平县| 囊谦县| 乾安县| 厦门市| 三明市| 虹口区| 安平县| 云林县|