Задать вопрос

Как в Symfony передать переменные в конструктор создавая объект через DI?

Только начинаю изучать symfony, и мне не понятно, как в нем создать какой-либо объект используя DI передав ему в конструктор нужные параметры?

Если в Yii2 я делал так
$container->set('\app\components\SearchEngineInterface', '\app\components\SearchEngine');

//После чего мог делать что-то типа

$engine = $container->get('app\components\SearchEngineInterface', [$apiKey, $apiSecret], ['type' => 1]);
// Что эквивалентно: $engine = new \app\components\SearchEngine($apiKey, $apiSecret, ['type' => 1]);

То в symfony подобного я не нашел, и подозреваю, что плохо искал

Есть ли что-то подобное в SF?
  • Вопрос задан
  • 904 просмотра
Подписаться 3 Оценить 5 комментариев
Решения вопроса 1
BoShurik
@BoShurik Куратор тега Symfony
Symfony developer
Но это не имеет смысла. По крайней мере в той реализации, которую вы показали. Если я заменю
$container->set('\app\components\SearchEngineInterface', '\app\components\SearchEngine');

на, к примеру,
$container->set('\app\components\SearchEngineInterface', '\app\components\SuperSearchEngine');

где гарантии, что конструкторы у этих классов будет совпадать?

А так, похоже что вам нужна фабрика symfony.com/doc/current/service_container/factorie...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы