2017-08-28 10:15:49 4464次浏览 5条回答 0 悬赏 10 金钱

个人理解是这样的
beforeAction 请求当前控制器时 会首先去执行beforeAction 这个方法 做出过滤验证之类的操作
construct 实例化的时候执行
init 一般在模块中初始化操作? 不能在控制器中用吗?没有试过

最佳答案

  • Jeen 发布于 2017-08-28 14:46 举报

    从本质上来说,区别就是方法名 和 触发的顺序不同。
    如你所说的,在接收到请求并解析时,首先会实例化相关类文件
    即首先执行 __construct 中的逻辑代码
    根据框架的源码来看,第二步是执行 init 中的逻辑代码
    再到 beforeAction
    最后才是请求对应的控制器中的actionXxx 。

    当然所有的方法都是可以通过继承的方式修改,只需符合框架的逻辑执行顺序即可。 有疑问的话不妨多测试测试

    , 觉得很赞
  • 回答于 2017-08-28 11:05 举报

    就如你所说,差不多是这样

  • 回答于 2017-08-28 11:29 举报

    那你答对了

  • 回答于 2017-08-28 12:19 举报

    construct函数的最后一行调用了init()方法,源码参考yii\base\Object

    public function __construct($config = [])
        {
            if (!empty($config)) {
                Yii::configure($this, $config);
            }
            $this->init();
        }
    
  • 回答于 2017-08-29 00:13 举报

    建议从$application->run开始看看整体的流程,看完你就会发现一切都是浮云,当然设计出这道框架的人肯定时拥有不少项目经验的。也可以从 深入了解Yii2开始看起,(搜索关键词。

您需要登录后才可以回答。登录 | 立即注册
jayrui612
禁止会员

jayrui612

注册时间:2017-03-24
最后登录:2019-05-27
在线时长:42小时30分
  • 粉丝12
  • 金钱3845
  • 威望170
  • 积分5965

热门问题