Bonjour @mathilde_59,
Vos observations sont très pertinentes. Le pattern new MyClass() est en effet à proscrire dans un environnement Symfony/PrestaShop 9, car il contourne le conteneur de services et rend la gestion des dépendances compliquée. Quant à l'absence de typehints, PHP 8.2 est beaucoup plus strict et cela peut provoquer des erreurs inattendues.
Pour la compatibilité avec les souscripteurs d'événements Symfony, l'idée n'est pas de transformer cette fonction en souscripteur directement, mais de faire en sorte que la logique myordergridproUpdate soit un service injecté, et que sa méthode inconsistency() puisse être appelée par un service ou un contrôleur qui, lui, pourrait être déclenché par un événement.
Voici une version adaptée de votre snippet avec un typehint de retour strict, en supposant que inconsistency() renvoie un tableau d'incohérences (vide si aucune) :
function inconsistency(): array // Typehint strict PHP 8.2 pour le rapport d'incohérence
{
// Dans PrestaShop 9, l'instanciation directe comme 'new myordergridproUpdate()'
// devrait idéalement être remplacée par l'injection de dépendances via un service.
// La logique métier doit être accessible par les souscripteurs d'événements Symfony.
return (array) (new myordergridproUpdate())->inconsistency();
}
Cela résout le problème du typehint direct. Pour une intégration complète et maintenable dans PS9, il serait préférable d'encapsuler cette logique dans un module dédié qui respecte l'architecture Symfony. Vous pouvez trouver des solutions comme automatiser order grid – colonnes sur la boutique qui gèrent ces aspects de manière robuste.