Yii2 核心抽象
代码写在哪里,最好的范例就是看框架本身,熟悉相关的概念(Yii2 基础抽象图如下)
原本基类是Object, 2.0.14 之后改为BaseObject ,它实现了属性的抽象
下面一层是组件 component 多了事件event 和 行为behaviour ,因为behaviour会注入属性,所以组件的属性也重写了。
再下层的抽象是 Service Locator(服务定位器)和 Container(容器)
服务器定位器我们上面写的新增Yii2 sevice层就是服务定位器的实现,类同全局注册表一样,Service 可以配置数组的形态存在如新增Yii2 sevice层中的service文件夹里的 Application.php就是。
另一边,Container 是 DI 设计模式的核心实现,主要就是容器。
Module (模块) 是业务逻辑的基本组织单位,Module 自己就是一个 ServiceLocator。因为它是一个组织者,也是一个容器,Module 控制着 Controller 和 View 的生命周期,此外 Module 还可以跟自己嵌套。所以,Module 就是 Yii 框架里,最核心的容器抽象了。帮助更有效的组织代码。
Application (Yii::$app) 是一种特殊的 Module,它是一个应用,整个系统启动的第一个容器。所以它是 Module 的子类。同时也是一个服务定位器,而这些服务通常会在config文件夹里配置在组件数组,称为应用组件通过 Yii::$app->组件名来调用
评论区
请登陆 后评论!