一、构造函数
//构造函数
public function __construct($id, $parent = null, $config = [])
{
//模块id
$this->id = $id;
//父模块
$this->module = $parent;
//其他配置
parent::__construct($config);
}
二、getInstance方法,返回当前请求的模块实例
//返回当前请求的模块实例
public static function getInstance()
{
$class = get_called_class();
return isset(Yii::$app->loadedModules[$class]) ?
Yii::$app->loadedModules[$class] :
null;
}
三、setInstance方法,设置当前请求的实例
//设置当前请求的模块实例
public static function setInstance($instance)
{
if ($instance === null) {
//删除已经加载的模块
unset(Yii::$app->loadedModules[get_called_class()]);
} else {
Yii::$app->loadedModules[get_class($instance)] = $instance;
}
}
四、init方法,模块初始化,初始化模块的控制器命名空间
/**
* 模块初始化
*/
public function init()
{
if ($this->controllerNamespace === null) {
$class = get_class($this);
if (($pos = strrpos($class, '\\')) !== false) {
//默认命名空间,在模块路径加'controllers'
$this->controllerNamespace = substr($class, 0, $pos) . '\\controllers';
}
}
}
五、getUniqueId方法,返回一个唯一标识模块的id
/**
* 返回一个唯一标识模块的id
* @return string
*/
public function getUniqueId()
{
return $this->module ?
//父模块的id
ltrim($this->module->getUniqueId() . '/' . $this->id, '/') :
//当前模块的id
$this->id;
}
总结:
阅读了5个方法:
- __construct 构造函数
- getInstance方法,返回当前请求的模块实例
- setInstance方法,设置当前请求的实例
- init方法,模块初始化,初始化模块的控制器命名空间
- getUniqueId方法,返回一个唯一标识模块的id