Injection de dépendance et héritage
Bonjour,
J'ai 3 services ServA, ServB et ServC. ServB et ServC héritent tous les deux de ServA.
Lors de la construction d'une instance ServB ou ServC, j'ai besoin d'utiliser ContainerInterface ainsi qu'un deuxième objet, différent pour ServB que pour ServC. Par Exemple :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| class ServA {
protected $container;
}
class ServB extends ServA {
protected $a;
function __construct(ContainerInterface $container, ObjetA $a) {
$this->container = $container;
$this->a = $a
}
}
class ServC extends ServA {
protected $a;
function __construct(ContainerInterface $container, ObjetB $a) {
$this->container = $container;
$this->a = $a
}
} |
Pour des raisons principalement esthétiques (et parce que je suis allergique au copier-coller), j'aurai souhaité plutôt écrire ce genre de code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| class ServA {
protected $container;
function __construct(ContainerInterface $container) {
$this->container = $container;
}
}
class ServB extends ServA {
protected $a;
function __construct(ObjetA $a) {
$this->a = $a
}
}
class ServC extends ServA {
protected $a;
function __construct(ObjetB $a) {
$this->a = $a
}
} |
Par contre, il est évident que le container ne peut pas être initialisé ainsi.
Pourriez-vous m'indiquer une syntaxe correcte afin d'arriver à profiter de l'autowire et d'éviter au maximum du copier-coller de code ?
Merci,