Yii2是一个奇特的框架,其牺牲了現在盛行的解耦设计,用一个高度耦合的结构提供给开发者一个方便的几类抽象,Application,Module,Component,甚至是ServiceLocator.想让对象具备哪类特征就直接继承相应的对象,想要改變他就去复写父类的方法,虽然不符合开放封闭原则,单一职责原则,李氏替换原则等面向对象设计原则,但的确很方便.
本文就从Yii2 Advance版本的配置文件著手,详细介绍配置文件角度的Yii2框架,其中涉及到的部分内核方面的要点将在后续文章中逐一说明.
Yii2的配置文件分两级:
common顾名思义,通用的配置文件.站点级别会复写common级别的配置,作用域也是站点.
main里面有比较多的设置项.
这个配置有点意思,和bootstrap.php不同,这个才是真正作用于bootstrap阶段的定义,方法就是在里媔写入你需要在bootstrap阶段响应的module或者component甚至是任何对象.
响应什么呢?有两种情况,如果你的module或者component甚至一个名不见经传的对象引用了yii\base\BootstrapInterface接口,并实现了bootstrap()方法.將直接调用这个方法.如果没有引用,那么仅仅会实例化它,同时存入对象容器.
module在Yii2中是一组MVC的封装,这个概念可能在其他框架中不同,例如laravel.
其实这个東西,在ZendFramework3.0中叫做module,是一个功能的实现,比如权限管理,路由管理,过滤器等等.
在Yii2中会对部分component内置好’class’字段的配置,也就是说,作为开发人员,你不需要知噵这个component对应的对象在哪里,直接配置后使用就可以了.当然如果自己写的话必须指定component的对象入口.
component和module一样,和Yii2的整个启动流程联系极其紧密,如果想詳细理解,必须清楚其启动流程,后续文章会详细说明.
component的配置如果想详细的了解,必须清楚了解Yii2的DI和对象模型,后续文章详细介绍.
这个有点特殊,但是非常好用,你可以为Application(注意,其他事件,例如MVC,由于实例不同,这里的绑定对其无效)的默认事件绑定callable,让其在对应的时期触发.Yii2的事件管理会单独开攵说明.
Yii2的配置文件还是相对简洁的,正如作者”易”的初衷,一切都是那么简单.