Есть класс, который работает с БД. Экземпляр соединения БД передаётся через конструктор.
class UpdateStatsCommand extends Object {
/**
* @var Connection
*/
protected $db;
/**
* @inheritdoc
*/
public function __construct(Connection $db, array $config = []) {
$this->db = $db;
parent::__construct($config);
}
...
Вопрос: как сделать так чтобы при инстанцировании этого класса через Yii::createObject(UpdateStatsCommand::class) в конструктор внедрялась ссылка на компонент приложения db?
Я пробовал добавить в bootstrap.php следующее:
Yii::$container->set(yii\db\Connection::class, function () {
return Yii::$app->get('db');
});
Но при запуске приложение падает от переполнения памяти:
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted
Похоже это происходит из-за того, что при инициализации компонента db Yii находит в контейнере имя класса yii\db\Connection и пытается вызывать функцию, которая обращается к компоненту, а компонент не проинициализирован, соответственно начинается его инициализация и всё зацикливается.