walkor / webman-framework

webman-framework
118 stars 61 forks source link

Suport controller methods: _init/_deinit #39

Closed ichynul closed 2 years ago

ichynul commented 2 years ago

由于控制器只会实列化一次,如果想在每个控制器中的action执行前做一些用的初始化就不方便。 添加两个方法_init/_deinit分别在请求执行前和执行后做一些额外的操作。 关于方法的命名,一开始是想用initializedeinitialize。但参考tp框架时,initialize方法是protected的,无法在外部调用,所以就用了_init,然后在里面调用initialize


namespace app\controller;

class Basecontroller
{
    public function  _init()
    {
         $this->initialize();
    }

    public function  _deinit()
    {
    }

   //在子控制器中重写此方法。
    protected function initialize()
    {
         //do something
    }
}
walkor commented 2 years ago

https://www.workerman.net/plugin/30 这个有插件。后面框架本身可能会支持一个参数,用来开启是否每个请求都重新初始化控制器