Magento 2: exclure les classes de la génération d'intercepteurs


9

Dans Magento 2 (beta9 et supérieur), vous pouvez exécuter cette commande php bin/magento setup:di:compileet tous les intercepteurs, usines et proxies (et peut-être d'autres) seront générés dans le var/generationdossier pour toutes les classes que vous avez dans votre instance magento.
Ceci est utile pour les environnements en direct car sinon les classes mentionnées ci-dessus seront générées au moment de l'exécution quand elles sont nécessaires et pourraient affecter les performances.
Existe-t-il un moyen d'exclure certaines classes de ce script afin que les intercepteurs ne soient pas créés lors de l'exécution de la commande?
À titre d'exemple: je veux que le contrôleur Magento\Backend\Controller\Adminhtml\Dashboard\RefreshStatisticsne génère pas d'intercepteurs.


Pourquoi en avez-vous besoin?
Anton Kril

@AntonKril. Arrêtez de poser des questions et donnez-moi une solution: D. Maintenant sérieusement, j'essaie de supprimer certains modules et ce faisant, le setup:di:compileéchoue parce que certaines classes parentes sont manquantes. Les classes qui étendent ces classes manquantes existent toujours mais elles ne sont pas utilisées par l'application. Et je ne peux pas les supprimer car ils sont dans les modules dont j'ai besoin. Voir une explication complète ci-dessous: magento.stackexchange.com/questions/69040/…
Marius

Réponses:


7

pour exécuter à partir de cli au moins dans les versions antérieures, il y a le exclude-patternparamètre. Il a été ajouté pour éviter les problèmes lorsqu'une classe ne peut pas être traitée correctement, comme cela se produit par exemple avec les classes magento1. Les commandes et les arguments peuvent avoir changé en les convertissant en commandes de console.

Mais je ne sais pas quel est votre objectif, donc je ne peux pas dire si c'est une bonne solution à utiliser.


Voici ce que j'essaie de faire. Je supprime certains modules pour voir jusqu'où je peux aller. Parmi ces modules se trouve le Reportmodule. Mais en raison du couplage étroit entre le module Rapports et le module principal, il existe toujours des classes dans le module principal qui dépendent des classes du module de rapport. J'ai trouvé un moyen de ne pas les utiliser, mais comme la commande di analyse les fichiers, elle passe par les classes "ignorées" et essaie de construire les intercepteurs. Mais cela échoue car la classe parente de, Magento\Backend\Controller\Adminhtml\Dashboard\RefreshStatisticspar exemple, n'existe pas. J'ai donc besoin d'un moyen d'exclure cela.
Marius

il semble que dans l'approche de la commande de console, il n'y a pas de exclude-patternparamètre. Ou du moins je ne l'ai pas trouvé. J'ai regardé DiCompileCommand::configure.
Marius

Je vois, vous pouvez ajouter un problème demandant cette fonctionnalité en vous référant à ce PR: github.com/magento/magento2/pull/986 ou vous utilisez le changeset pour tester comment l'ajouter temporairement pour votre build local.
Flyingmana
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.