php - 在 Yii2 中初始化组件的更好方法是什么?
问题描述
我在 Yii2 中创建了一个组件并使用yii\base\Component
.
现在,我想初始化我创建的组件,可以通过两种方式完成
使用
new
:$sampleClass = new SampleClass();
将组件放入配置文件:
'sampleClass' => [ 'class' => 'app\components\SampleClass', ],
并像访问它一样
Yii::$app->sampleClass
。
它们之间有什么区别以及初始化组件的更好方法是什么?
解决方案
这主要取决于您的需求。在配置中定义组件并将其用作Yii::$app->sampleClass
创建一个实例,该实例可以在配置级别轻松配置并在项目之间共享。完美的示例是 DB 连接或 URL 管理器——通常您希望在多个地方使用这些组件的相同实例,并且您希望能够轻松配置它们。在配置中定义它们并使用 asYii::$app->component
是 Yii 中的自然选择(尽管总体而言这是不好的做法,并且Yii::$app
在大型应用程序中使用静态服务定位器可能会出现问题)。
如果您不想共享组件或想直接将其作为依赖项传递,则使用new
关键字 or是更好的选择。Yii::createObject()
推荐阅读
- java - 使用 Mule 4 转换 Microsoft Excel .xls(不是 .xlsx)
- docker - Docker-compose,远程上下文,相对于本地机器而不是远程的路径
- project-reactor - Reactor Context 是否仅用于静态初始化的数据?
- networking - TCP/IP 和 UDP 是 Internet 唯一支持的协议吗?
- scrapy - 如何将 Keep_Fragments 参数设置为 True?
- powerbi - 如果实体在当前年份不存在,则 PreviousYear 缺失行
- r - 根据列名是否在字符串向量中为多个列分配值
- javascript - 如何在一个操作中上传文件并提交表单
- javascript - 为什么 React Router 不能使用
? - batch-file - 批处理:检查进程是否处于活动状态