Controller.php源码 [ 2.0 版本 ]
Controller.php里的construct方法 里面的参数我打印过都有值,就是不清楚,$id, $module这2个值谁传进来的??
我以前把construct当做是构造方法,自动会运行的
public function __construct($id, $module, $config = [])
{
$this->id = $id;
$this->module = $module;
parent::__construct($config);
}
还有一个方法getModules(),获取当前控制器所有的父模块,现在的问题是我的是基础版,没有模块,那这个方法为什么运行进来了,而且什么时候调用的??
public function getModules()
{
$modules = [$this->module];
$module = $this->module;
while ($module->module !== null) {
array_unshift($modules, $module->module);
$module = $module->module;
}
return $modules;
}
共 2 个回答
-
-

1, $id, $module这2个值谁传进来的 ?
是
Module传进来的;Module通过路由orcontrollerMap得到controller的Id, 再把自身传进来, 就实例化出controller了;2, 基础版中,没有模块,
getModules()方法为什么运行进来,什么时候调用的 ?首先 基础版中, 是有模块的, 并且可以嵌套多层;
Yii本身就是建立在Module的基础上,Yii::$app也是一个Module.至于什么时候调用,
在框架中, 触发
controller中的beforeAction和afterAction事件时, 会调用祖宗Module执行相应的事件.对于开发者来说, 你通过
controller调用getModules方法 , 或者 访问controller的modules属性时候 就调用了共 5 条回复luoxiao , KillMeAgain 觉得很赞
xyf90314
注册时间:2015-03-04
最后登录:2023-03-13
在线时长:95小时23分
最后登录:2023-03-13
在线时长:95小时23分
- 粉丝21
- 金钱5257
- 威望40
- 积分6607