Допустим, у меня есть класс:
class Car
{
private Engine $engine;
public function __construct(Engine $engine)
{
$this->engine = $engine;
}
}
Теперь я могу go до config/services.yaml
и добавить такую конфигурацию:
StandardCar:
class: App\Car
arguments: ['@StandardEngine']
SuperCar:
class: App\Car
arguments: ['@SuperEngine']
Обычно я бы использовал Car
класс в конструкторе для внедрения экземпляра, но если теперь я хочу ввести конкретный c автомобиль, как я могу его ввести?
Я знаю, что могу ввести ContainerInterface
, а затем сделать что-то вроде этого :
$myCar = $container->get('SuperCar`);
Однако я заметил, что это может быть невозможно в будущем:
# ./bin/console debug:autowiring
[...]
ContainerInterface is the interface implemented by service container classes.
Symfony\Component\DependencyInjection\ContainerInterface (service_container) - deprecated
[...]
Также на веб-сайте git symfony я обнаружил примечание, что при использовании ContainerInterface
устарело, и я должен явно настраивать службы - что, очевидно, я и пытаюсь сделать, но как мне их затем внедрить?