Когда вы расширяете класс, имеющий аргументы конструктора, вы должны сохранить эти аргументы и добавить любой дополнительный аргумент после.
Пример:
class BaseClass
{
public function __construct(Foo $foo, Bar $bar) {
// ....
}
}
Чтобы создать экземпляр этого класса, вам потребуетсядля передачи контейнера и менеджера сущностей:
$base = new BaseClass($fooInstance, $barInstance);
Если вы хотите расширить этот класс, ему, скорее всего, понадобятся эти зависимости + наша новая зависимость:
class ChildClass extends BaseClass
{
public function __construct(Foo $foo, Bar $bar, Duck $duck)
{
// The parent (BaseClass) requires Foo and Bar,
// or it will throw an error
parent::__construct($foo, $bar);
$this->duck = $duck;
}
}
Для создания экземпляраВ нашем новом ChildClass нам нужно будет передать три аргумента:
$child = new ChildClass($fooInstance, $barInstance, $duckInstance);
Затем, когда вы определяете наш ChildClass в service.yml, вам необходимо определить все три зависимости:
app.childclass:
class: ChildClass
arguments: ["Foo", "Bar", "Duck"]
...
Поскольку я сам не использую Symfony, вы должны извиниться за то, что не знаете точный синтаксис service.yml, но концепция та же.