Magento 2: escludere le classi dalla generazione di intercettori


9

In Magento 2 (beta9 e versioni successive) puoi eseguire questo comando php bin/magento setup:di:compilee tutti gli intercettori, le fabbriche e i proxy (e forse altri) verranno generati nella var/generationcartella per tutte le classi che hai nella tua istanza di magento.
Ciò è utile per gli ambienti live perché altrimenti le classi sopra menzionate verranno generate in fase di esecuzione quando sono necessarie e potrebbero influire sulle prestazioni.
C'è un modo per escludere alcune classi da questo script in modo che gli intercettori non vengano creati quando si esegue il comando?
Ad esempio: voglio che il controller Magento\Backend\Controller\Adminhtml\Dashboard\RefreshStatisticsnon abbia generato intercettori.


Perchè ti serve?
Anton Kril,

@AntonKril. Smetti di fare domande e dammi una soluzione: D. Ora seriamente, sto cercando di rimuovere alcuni moduli e, nel farlo, setup:di:compilefallisce perché mancano alcune classi genitore. Le classi che estendono quelle classi mancanti esistono ancora ma non vengono utilizzate dall'applicazione. E non posso rimuoverli poiché sono nei moduli di cui ho bisogno. Vedi una spiegazione completa di seguito: magento.stackexchange.com/questions/69040/…
Marius

Risposte:


7

per l'esecuzione da cli almeno nelle versioni precedenti c'è il exclude-patternparametro. È stato aggiunto per evitare problemi quando una classe non può essere elaborata correttamente, come accade per esempio con le classi magento1. I comandi e gli argomenti potrebbero essere cambiati convertendoli in comandi della console.

Ma non sono sicuro di quale sia il tuo obiettivo, quindi non posso dire se questa è una buona soluzione da utilizzare.


Ecco cosa sto cercando di fare. Sto rimuovendo alcuni moduli per vedere fino a che punto posso andare. Tra questi moduli c'è il Reportmodulo. Ma a causa dello stretto accoppiamento tra i moduli Report e Backend, ci sono ancora classi nel modulo backend che dipendono dalle classi del modulo report. Ho trovato un modo per non usarli, ma dal momento che il comando di analizza i file passa attraverso le classi "ignorate" e cerca di costruire gli intercettori. Ma questo fallisce perché la classe genitrice di, Magento\Backend\Controller\Adminhtml\Dashboard\RefreshStatisticsper esempio, non esiste. Quindi ho bisogno di un modo per escluderlo.
Marius

sembra che nell'approccio del comando console non vi sia alcun exclude-patternparametro. O almeno non l'ho trovato. Ho guardato dentro DiCompileCommand::configure.
Marius

Vedo, potresti aggiungere un Problema che richiede questa funzionalità facendo riferimento a questo PR: github.com/magento/magento2/pull/986 oppure puoi usare il changeset lì per testare come aggiungerlo temporaneamente per la tua build locale.
Flyingmana,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.