Magento 2: excluir clases de la generación de interceptores

9

En Magento 2 (beta9 y superior) puede ejecutar este comando php bin/magento setup:di:compiley todos los interceptores, fábricas y proxies (y tal vez otros) se generarán en la var/generationcarpeta para todas las clases que tenga en su instancia de magento.
Esto es útil para entornos en vivo porque, de lo contrario, las clases mencionadas anteriormente se generarán en tiempo de ejecución cuando sean necesarias y podrían afectar el rendimiento.
¿Hay alguna manera de excluir algunas clases de este script para que los interceptores no se creen al ejecutar el comando?
Como ejemplo: quiero que el controlador Magento\Backend\Controller\Adminhtml\Dashboard\RefreshStatisticsno genere interceptores.

Marius
fuente
¿Por qué necesitas esto?
Anton Kril
@AntonKril. Deja de hacer preguntas y dame una solución: D. Ahora en serio, estoy tratando de eliminar algunos módulos y al hacerlo, setup:di:compilefalla porque faltan algunas clases principales. Las clases que amplían esas clases faltantes todavía existen, pero la aplicación no las utiliza. Y no puedo eliminarlos ya que están en los módulos que necesito. Vea una explicación completa a continuación: magento.stackexchange.com/questions/69040/…
Marius

Respuestas:

7

para ejecutar desde cli al menos en versiones anteriores existe el exclude-patternparámetro Se agregó para evitar problemas cuando una clase no se puede procesar correctamente, como sucede, por ejemplo, con las clases magento1. Los comandos y argumentos pueden haber cambiado al convertirlos en comandos de consola.

Pero no estoy seguro de cuál es su objetivo, por lo que no puedo decir si es una buena solución.

Flyingmana
fuente
Esto es lo que intento hacer. Estoy eliminando algunos módulos para ver qué tan lejos puedo llegar. Entre estos módulos está el Reportmódulo. Pero debido al estrecho acoplamiento entre los informes y el módulo de programa de fondo, todavía hay clases en el módulo de programa de fondo que dependen de las clases del módulo de informe. Encontré una manera de no usarlos, pero como el comando di analiza los archivos, pasa por las clases "ignoradas" e intenta construir los interceptores. Pero esto falla porque la clase padre de, Magento\Backend\Controller\Adminhtml\Dashboard\RefreshStatisticspor ejemplo, no existe. Entonces necesito una forma de excluir esto.
Marius
parece que en el enfoque del comando de consola no hay exclude-patternparam. O al menos no lo encontré. Miré en DiCompileCommand::configure.
Marius
Ya veo, podría agregar un Problema que solicite esta funcionalidad haciendo referencia a este PR: github.com/magento/magento2/pull/986 o use el conjunto de cambios allí para probar cómo agregarlo temporalmente para su compilación local.
Flyingmana