控制器初始化方法_initialize

来源:互联网 发布:外网管理软件 编辑:程序博客网 时间:2024/05/21 10:21

如果你的控制器类继承了\think\Controller类的话,可以定义控制器初始化方法_initialize,在该控制器的方法调用之前首先执行。

例如:

namespace app\index\controller;use think\Controller;class Index extends Controller{    public function _initialize()    {        echo 'init<br/>';    }    public function hello()    {        return 'hello';    }    public function data()    {        return 'data';    }}

如果访问
http://localhost/index.php/index/Index/hello

会输出

inithello

如果访问
http://localhost/index.php/index/Index/data

会输出

initdata

在PHP中,_initialize()方法相当于php5中的_construct()函数

其主要用于将所有公用的东西在此函数里声明!


具体应用:

      class Action extends MyTpl{
        private $timer;
         /* 这是一个主运行方法,用户所有的访问都是通过这个方法开始运行的
         * 不需要参数,没有返回值,通过这个方法加载用户的每个执行动作
         */
        function run(){
            $this->timer=new Timer();
            //如果声明了_initialize()方法则去调用这个方法,这样用户的每个动作都通过这个方法,可以用于做权限
            if(method_exists($this, '_initialize')){
                $this->_initialize();
            }
            $act=isset($_GET["a"])?$_GET["a"]:"index";
            //调用用户访问的方法,例如:admin.php?m=user&a=add去访问user模块中的add方法
            if(method_exists($this,$act)){
                eval('$this->'.$act.'();');  //如果$act为add,相当于$this->add();
            }else{
                echo '没有这个动作!';
            }
        }

0 0
原创粉丝点击