Мне нравится автоматическое подключение , это определенно самое элегантное решение для управления зависимостями, которое я когда-либо видел. Я хотел бы также использовать его при создании экземпляров новых объектов.
Рассмотрим следующий сервис:
class MyService()
{
public function __construct(Dependency1 $var1, Dependency99 $var99)
{
...
}
}
Это когда я его использую:
class AnotherService
{
public function buildServices(array $arrData)
{
$arrMyServices = [];
foreach($arrData as $data) {
// I want to autowire this!
$arrMyServices[] = (new MyService($var1, $var99))
->loadData($data);
}
return $arrMyServices;
}
}
Вопрос это примерно строка ниже // I want to autowire this!
. Я не хочу передавать здесь зависимость вручную , а хочу создать новую службу с автоматическим подключением. В идеале я бы позвонил $symfony->createMyService()
и получил бы новый экземпляр моей службы, подключенный автоматически.
ATM Я буквально создал фабричный метод вроде createMyService()
, но это отстой. Есть ли способ сделать это «Symfony»?
Изменить: к сожалению, похоже, я не смог очень хорошо объяснить свой вопрос. Виноват. Давайте попробуем повторить это так:
Как создать экземпляр нескольких служб, требующих различных зависимостей в al oop? Пожалуйста, ответьте на этот конкретный c вопрос, спасибо!