栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP > php开源框架 > thinkphp

操作绑定到类_帮助文档_Thinkphp手册用法

thinkphp 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

操作绑定到类_帮助文档_Thinkphp手册用法

定义

ThinkPHP3.2版本提供了把每个操作方法定位到一个类的功能,可以让你的开发工作更细化,可以设置参数ACTION_BIND_CLASS,例如:

'ACTION_BIND_CLASS'    =>    True,

设置后,我们的控制器定义有所改变,以URL访问为 http://serverName/Home/Index/index为例,原来的控制器文件定义位置为:

Application/Home/Controller/IndexController.class.php

控制器类的定义如下:

namespace HomeController;
use ThinkController;
class IndexController extends Controller{
    public function index(){
        echo '执行Index控制器的index操作';
    }
}

可以看到,实际上我们调用的是 HomeControllerIndexController 类的index方法。

设置后,控制器文件位置改为:

Application/Home/Controller/Index/index.class.php

控制器类的定义如下:

namespace HomeControllerIndex;
use ThinkController;
class index extends Controller{
    public function run(){
        echo '执行Index控制器的index操作';
    }
}

现在,我们调用的其实是 HomeControllerIndexindex 类的run方法。

run方法依旧可以支持传入参数和进行Action参数绑定操作,但不再支持A方法实例化和R方法远程调用,我们建议R方法不要进行当前访问控制器的远程调用。

前置和后置操作

当设置操作方法绑定到类后,前置和后置操作的定义有所改变,只需要在类里面定义_before_run和_after_run方法即可,例如:

namespace HomeControllerIndex;
use ThinkController;
class index extends Controller{
    public function _before_run(){
        echo 'before_'.ACTION_NAME;
    }
    public function run(){
        echo '执行Index控制器的index操作';
    }
    public function _after_run(){
        echo 'after_'.ACTION_NAME;
    }
}
空控制器

操作方法绑定到类后,一样可以支持空控制器,我们可以创建 Application/Home/Controller/_empty目录,即表示如果找不到当前的控制器的话,会到_empty控制器目录下面定位操作方法。

例如,我们访问了URL地址 http://serverName/Home/Test/index,但并不存在 Application/Home/Controller/Test目录,但是有定义Application/Home/Controller/_empty目录。

并且我们有定义:

Application/Home/Controller/_empty/index.class.php

控制器定义如下:

namespace HomeController_empty;
use ThinkController;
class index extends Controller{
    public function run(){
        echo '执行'CONTROLLER_NAME.'控制器的'.ACTION_NAME.'操作';
    }
}

访问http://serverName/Home/Test/index后 输出结果显示:

执行Test控制器的index操作
空操作

操作绑定到类后,我们依然可以实现空操作方法,我们只要定义一个 HomeControllerIndex_empty类,就可以支持Index控制器的空操作访问,例如: 控制器定义如下:

namespace HomeControllerIndex;
use ThinkController;
class _empty extends Controller{
    public function run(){
        echo '执行Index控制器的'.ACTION_NAME.'操作';
    }
}

当我们访问http://serverName/Home/Index/test后 输出结果显示:

执行Index控制器的test操作


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/825131.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号