官方文档
http://www.yiiframework.com/doc-2.0/guide-structure-modules.html
自己的一些理解:
application和console本质上也都是module
我们建立的module实质上都是application的子模块
module里加载特定配置
Module.php
<?php
namespace app\modules\testmod;
/**
* testmod module definition class
*/
class Module extends \yii\base\Module
{
/**
* @inheritdoc
*/
public $controllerNamespace = 'app\modules\testmod\controllers';
/**
* @inheritdoc
*/
public function init()
{
parent::init();
\Yii::configure($this, require(__DIR__ . '/config.php'));
// custom initialization code goes here
}
}
config.php,这里和config/web.php的原理是一样的。
<?php
return [
'components' => [
'db' => require(__DIR__ . '/db.php'),
],
'params' => [
'adminEmail' => 'testmod@example.com',
],
];
控制器里使用模块的配置
print \Yii::$app->params['adminEmail']; // application的参数
print $this->module->params['adminEmail']; // 当前模块的参数
print $this->module->db->createCommand("SELECT COUNT(1) FROM testmod")->queryScalar(); // 当前模块的组件
视图里使用模块的配置
<?= $this->context->module->params['adminEmail'] ?>