Какой лучший способ инициализировать Компонент в Yii2? - PullRequest
0 голосов
/ 31 января 2019

Я создал один компонент в Yii2 и расширил его до yii\base\Component.

Теперь я хочу инициализировать созданный мной компонент, что можно сделать двумя способами

  1. Использование new:

    $sampleClass = new SampleClass();
    
  2. Размещение компонента в файле конфигурации:

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

    и доступ к нему как Yii::$app->sampleClass.

В чем разница между ними и какой способ инициализации компонента лучше?

1 Ответ

0 голосов
/ 31 января 2019

Это в основном зависит от ваших потребностей.Определение компонента в конфигурации и использование его в качестве Yii::$app->sampleClass создает один экземпляр, который можно легко настроить на уровне конфигурации и совместно использовать в проекте.Прекрасными примерами являются соединение с БД или менеджер URL - обычно вы хотите использовать один и тот же экземпляр этих компонентов в нескольких местах, и вы хотите иметь возможность легко их настраивать.Определение их в конфигурации и использование в качестве Yii::$app->component является естественным выбором в Yii (хотя в целом это плохая практика, и использование Yii::$app в качестве статического указателя службы может быть проблематичным в больших приложениях).

Использование ключевого слова newили Yii::createObject() - лучший вариант, если вы не хотите предоставлять общий доступ к компоненту или хотите передать его как зависимость напрямую.

...