Salut, alors dans ton exemple tes classes B, C, D extends de A, dans cette situation ta classe A est un parent, et les classes enfant ne peuvent pas modifier la classe parent car chaque enfant à sa propre instance de la classe A
L'usage normal serait d'utiliser directement les classes enfants, et de ne se servir de la classe A que comme d'un modèle de classe
Si tu utilises directement la classe A, tes classes User, Role et Event devraient extends d'une classe Model, et comme ça tu pourras tout simplement faire
Et dans $e tu pourras injecter User, Role ou Event, ça fonctionnera