首页 > 解决方案 > 在 Yii2 中初始化组件的更好方法是什么?

问题描述

我在 Yii2 中创建了一个组件并使用yii\base\Component.

现在,我想初始化我创建的组件,可以通过两种方式完成

  1. 使用new

    $sampleClass = new SampleClass();
    
  2. 将组件放入配置文件:

    'sampleClass' => [
        'class' => 'app\components\SampleClass',
    ], 
    

    并像访问它一样Yii::$app->sampleClass

它们之间有什么区别以及初始化组件的更好方法是什么?

标签: phpyiiyii2

解决方案


这主要取决于您的需求。在配置中定义组件并将其用作Yii::$app->sampleClass创建一个实例,该实例可以在配置级别轻松配置并在项目之间共享。完美的示例是 DB 连接或 URL 管理器——通常您希望在多个地方使用这些组件的相同实例,并且您希望能够轻松配置它们。在配置中定义它们并使用 asYii::$app->component是 Yii 中的自然选择(尽管总体而言这是不好的做法,并且Yii::$app在大型应用程序中使用静态服务定位器可能会出现问题)。

如果您不想共享组件或想直接将其作为依赖项传递,则使用new关键字 or是更好的选择。Yii::createObject()


推荐阅读