美文网首页PHP经验分享程序员
从配置文件的角度去了解Yii2

从配置文件的角度去了解Yii2

作者: Vett | 来源:发表于2017-12-23 13:42 被阅读0次

前言

Yii2是一个奇特的框架,其牺牲了现在盛行的解耦设计,用一个高度耦合的结构提供给开发者一个方便的几类抽象,Application,Module,Component,甚至是ServiceLocator.想让对象具备哪类特征就直接继承相应的对象,想要改变他就去复写父类的方法,虽然不符合开放封闭原则,单一职责原则,李氏替换原则等面向对象设计原则,但的确很方便.

本文就从Yii2 Advance版本的配置文件着手,详细介绍配置文件角度的Yii2框架,其中涉及到的部分内核方面的要点将在后续文章中逐一说明.

Yii2的配置文件分两级:

  1. common级别
  2. 站点级别

common顾名思义,通用的配置文件.站点级别会复写common级别的配置,作用域也是站点.

0. config/bootstrap.php

由于Yii2为了简化开发难度,所以用户定义的目录加载方式全部使用Yii2自己定义的autoload方法(Yii.php中注册的BaseYii.php中的autoload),而不是编辑composer.json然后dump autoload.

用法是将所有路径在index.php中全部注册到全局容器Yii中.方法就是Yii::setAlias();方法.

编辑的地方就确定在这个bootstrap.php文件中,但这个阶段并不是Yii的bootstrap阶段,只是在index.php中触发.有歧义,需要注意.

在common级别中,设置的是站点的root.在site中设置的是module的root.

1. config/main.php

main里面有比较多的设置项.

0. 'params'

首先require所有包括common和本站点的全部params.php(params-loacl.php),并将返回值放在params键下.

1. 'id'

就是当前站点的名称

2. 'basePath'

顾名思义,站点根目录

3. 'controllerNamespace'

站点下(非module中)controller的命名空间,在MVC阶段,Yii2.0会根据这个属性结合路由自动生成controller的命名空间.module级别的controller中controllerNamespace需要重新定义,可以在Module.php的init()方法中直接赋值.

4. 'bootstrap'

这个配置有点意思,和bootstrap.php不同,这个才是真正作用于bootstrap阶段的定义,方法就是在里面写入你需要在bootstrap阶段响应的module或者component甚至是任何对象.

响应什么呢?有两种情况,如果你的module或者component甚至一个名不见经传的对象引用了yii\base\BootstrapInterface接口,并实现了bootstrap()方法.将直接调用这个方法.如果没有引用,那么仅仅会实例化它,同时存入对象容器.

既然提到bootstrap,这个阶段Yii2还会调用所用的extension,做上述相同的事情.如果你自己编写了关于Yii2的扩展,这时候它将被实例化并缓存到Yii的对象容器中.至于extension的编写,非常简单,只需要为你的extension添加一个Yii2能用的bootstrap入口即可(一个对象,引用yii\base\BootstrapInterface接口,并将其配置在extension的配置文件vendor\yiisoft\extensions.php中).

5. 'modules'

对应的modules(例如backend)目录下的Module对象的命名空间.方便Yii2进入你所定义的module.

module在Yii2中是一组MVC的封装,这个概念可能在其他框架中不同,例如laravel.

6. 'component'

其实这个东西,在ZendFramework3.0中叫做module,是一个功能的实现,比如权限管理,路由管理,过滤器等等.

在Yii2中会对部分component内置好'class'字段的配置,也就是说,作为开发人员,你不需要知道这个component对应的对象在哪里,直接配置后使用就可以了.当然如果自己写的话必须指定component的对象入口.

component和module一样,和Yii2的整个启动流程联系极其紧密,如果想详细理解,必须清楚其启动流程,后续文章会详细说明.

component的配置如果想详细的了解,必须清楚了解Yii2的DI和对象模型,后续文章详细介绍.文章在这里

7. '事件on ...'

这个有点特殊,但是非常好用,你可以为Application(注意,其他事件,例如MVC,由于实例不同,这里的绑定对其无效)的默认事件绑定callable,让其在对应的时期触发.Yii2的事件管理会单独开文说明.

总结

Yii2的配置文件还是相对简洁的,正如作者"易"的初衷,一切都是那么简单.

相关文章

  • 从配置文件的角度去了解Yii2

    前言 Yii2是一个奇特的框架,其牺牲了现在盛行的解耦设计,用一个高度耦合的结构提供给开发者一个方便的几类抽象,A...

  • glusterfs 原理学习

    背景 最近,希望了解一下有关glusterfs的有关原理,从自己的角度来讲,从volume的配置文件来着手是一件非...

  • Spring IOC的深入理解(三)

    引言 从第三章开始,我们从源码的角度,对spring IOC进行分析 核心类的了解 我们大致来说一下Xml配置文件...

  • 从用户的角度去测试

    [摘要]随着互联网的日新月异,测试早已超出了职业的界限,融入了生活的每一个环节,现今在微信群,贴吧,等区域经常可见...

  • 从作者的角度去读书

    今天在看《刻意练习》这本书时,作者讲述了自己创作这本书时的心理表征和各阶段考虑的问题。我这才知道,原来要创作出这么...

  • 从产品的角度去研发

    强烈推荐大家有空的时间阅读下,能有不一样的收获。 https://www.yuque.com/linyecx/dr...

  • 从成果的角度去衡量

    很多时候努力工作,专注于提升自身技能,和搞好同事之间的关系,以此来提高收入或获得职位上的提升。其实工作真正的成果,...

  • NGINX配置文件

    1. 配置文件结构 我们从nginx安装后默认的配置文件,去了解nginx配置文件的结构 我们剔除文件里面的基础指...

  • 从宏观角度了解JVM

    Java开发人员都知道字节码将由JRE(Java运行时环境)执行。但许多人不知道JRE是Java虚拟机(JVM)的...

  • 用发展的眼光追技术

    本文从 PHP 语言的 YII2 框架说起,简单谈一些技术的演变和发展脉络。 YII2 这个框架是 PHP 语言生...

网友评论

    本文标题:从配置文件的角度去了解Yii2

    本文链接:https://www.haomeiwen.com/subject/utqqgxtx.html