Yii2扩展性笔记

时间:2022-10-05 09:53:36

目录(?)[+]

yii扩展性

  • 模块化
  • 事件机制
  • mixin(混合、多重继承)
  • 依赖注入

模块化

访问Gii创建模块

http://127.0.0.1/Yii/yii2-demo/web/index.php?r=gii
  • 1

创建一级模块article

,如下所示: 
Yii2扩展性笔记

生成模块后,需要在config\web.php中配置模块参考

<?php $params = require(__DIR__ . '/params.php'); $config = [ 'modules' => [ 'article' => [ 'class' => 'app\modules\article\article',//上图提示参数粘贴到web.php ], ], 

一级模块访问:

第一种:需要通过在controller中的文件访问子模块

class GiilearnController extends Controller
{
    /** * 1) * http://127.0.0.1/Yii/yii2-demo/web/index.php?r=giilearn/index * 访问上述地址即可到达子模块 * 2)直接访问子模块 * http://127.0.0.1/Yii/yii2-demo/web/index.php?r=article/default/index */
    public function actionIndex()
    {
        //获取子模块,读取的是子模块的ID,子模块需要在config\web.php中配置
        $article = \Yii::$app ->getModule('article');
        //调用子模块的操作
        $article ->runAction('default/index');
    }
}

第一种:直接访问子模块

http://127.0.0.1/Yii/yii2-demo/web/index.php?r=article/default/index

创建二级模块category

此模块创建于article模块下,即为article的子模块,如下所示 
Yii2扩展性笔记

子模块下的子模块的配置信息最好写在上一级模块生成的模块id的php文件中,比如例子所示的分类模块(子模块下的子模块的配置信息最好写在上一级模块生成的模块id的php文件中,比如例子所示的分类模块的父模块是article,此时把分类模块的配置写在article.php就好)的父模块是Article,此时配置Article.php就好

<?php namespace app\modules\article; class article extends \yii\base\Module { public $controllerNamespace = 'app\modules\article\controllers'; public function init() { parent::init(); //在父模块中配置子模块http://127.0.0.1/Yii/yii2-demo/web/index.php?r=article/category/default/index $this->modules = [ 'category' => [ 'class' => 'app\modules\article\modules\category\category', ], ]; // custom initialization code goes here } }

生成的文件结构为:

Yii2扩展性笔记