- L'injection de dépendance est plus flexible, plus robuste, plus testable, bref meilleure que créer l'objet dans la classe, pour des tas de raisons qui ont été présentées depuis des décennies, et qu'une recherche Google te permettra de retrouver. Je ne m'étendrai donc pas sur ce sujet :-)
- La signature du constructeur est
public function __construct(cellule $sentinel)
Ça signifie que le constructeur acceptera seulement des objets héritant de cellule (puisqu'on ne peut pas utiliser cellule directement car elle est abstraite). Comme tous les héritiers de cellule doivent implémenter la méthode display(), tu es sûr à 100% que tous les objets passés disposent de la méthode display();
Si tu essaies de passer autre chose, tu auras un message de ce genre, par exemple si on passe un objet stdClass
Fatal error: Uncaught TypeError: Argument 1 passed to Liste::__construct() must be an instance of Cellule, instance of stdClass given
Partager