在Yii2中初始化Component的更好方法是?

时间:2019-01-31 07:19:45

标签: php yii yii2

我在Yii2中创建了一个组件,并使用yii\base\Component对其进行了扩展。

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

  1. 使用new

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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