Hé ! Les acteurs Magento 2, vous êtes prêts ? Alors… Action ! Euh… non, non, non. Coupez !
On va arrêter d’utiliser Action par habitude ou par simplicité. D’aucun me diront mais c’est utilisé dans le backoffice à tour de bras. On sait tous que Magento est en mode : faites ce que je dis, pas ce que je fais….
Le poids des classes abstraites
Étendre \Magento\Framework\App\Action\AbstractAction
, \Magento\Framework\App\Action\Action
ou \Magento\Backend\App\AbstractAction
semble naturel, tant ces classes ont été conçues comme point d’entrée standard. Pourtant, derrière cette simplicité apparente se cache une lourdeur technique. En les héritant, on embarque automatiquement un lot de dépendances qui ne seront pas forcément utilisées. À chaque requête, ces objets sont instanciés, injectés et préparés, ce qui alourdit le temps de réponse et gonfle la consommation mémoire.
Le casting imposé
C’est comme si l’on se voyait imposer un casting complet pour tourner une scène. En héritant d’Action, vous faites entrer sur le plateau :
- RequestInterface
- ResponseInterface
- ObjectManagerInterface
- EventManagerInterface
- UrlInterface
- RedirectInterface
- ActionFlag
- ViewInterface
- MessageManagerInterface
- ResultRedirectFactory
- ResultFactory
Même si votre scénario n’en utilise qu’un ou deux, tout ce petit monde est là, payé, maquillé, prêt à entrer en scène. Il se peut que votre but soit de flinguer les performances de votre Magento, auquel cas, continuez !
Les stars trop chères

Dans ce casting imposé, certaines “stars” coûtent particulièrement cher. ViewInterface est l’exemple parfait : naguère indispensable, elle ressemble aujourd’hui à Steven Seagal. Grande vedette dans les années 90, il a continué à s’imposer sur des affiches alors qu’il devenait has been et que ses rôles perdaient tout intérêt, jusqu’au naufrage. ViewInterface, comme lui, alourdit la production sans apporter de vraie valeur moderne et est déprécié depuis quelques versions déjà. On se retrouve à financer une star vieillissante pour un rôle qui n’a plus lieu d’être.
Et puis il y a ObjectManagerInterface
. C’est un peu le Jim Carrey de Magento 2 : un très bon acteur, capable de performances subtiles et brillantes, mais qui a tendance à en faire des caisses s’il n’est pas savamment dirigé. L’Object Manager a son utilité, mais laissé en roue libre dans les contrôleurs, il impose sa présence et surcharge la scène bien plus qu’il ne faudrait. Soyons honnêtes, nous ne sommes pas tous des Michel Gondry du code.
EventManagerInterface et MessageManagerInterface sont les seconds rôles qui voudraient s’imposer comme acteurs principaux, un peu les Jared Leto du CMS. Pendant ce temps, RequestInterface et ResponseInterface remplissent sobrement leur rôle, sans chichi ni blabla. Les Keanu Reeves de Magento 2 !
Mais si vous n’avez besoin que d’acteurs comme Keanu, pourquoi prendre Steven, Jim ou Jared ?
Quand le minimalisme fait la différence
Un contrôleur Ajax qui renvoie simplement du JSON n’a pas besoin de tout ce casting. Le problème vient de l’héritage : vous prenez le package complet, qu’il vous serve ou non. Depuis Magento 2.3, les interfaces de contrôleurs permettent de choisir exactement ce dont vous avez besoin. Le code devient plus léger, plus clair et surtout plus efficace.
Sans implémenter les bonnes interfaces, un contrôleur n’est même plus considéré comme une action valide par Magento. Cette validation intervient dans le FrontController, au moment où la requête est analysée par le routeur. Si la classe n’hérite pas de Action
ou qu’elle n’implémente pas une des interfaces autorisées, elle est rejetée et provoque une 404.
Cette contrainte n’est pas arbitraire : elle a été mise en place pour renforcer la clarté et la sécurité, en forçant le développeur à déclarer explicitement quels types de requêtes son contrôleur accepte. C’est aussi un moyen de se débarrasser du bagage inutile des classes abstraites, et de préparer un cadre plus léger et plus évolutif. Action étant dépréciée depuis quelques années, sa validité est compromise.
Conclusion
Hériter de Action, c’est tourner un court-métrage avec toute l’industrie du cinéma sur le plateau. Implémenter les interfaces, c’est prendre la caméra adaptée et filmer directement ce que vous voulez montrer. La différence est nette : on gagne en performance, en lisibilité et en cohérence architecturale.
Et encore, quand je parle de court-métrage, je fais encore dans le lourd. Une requête ajax, c’est une vidéo tik tok…
Il ne me reste qu’à souhaité la mort définitive du contrôleur Action.
Laisser un commentaire
Vous devez vous connecter pour publier un commentaire.