Integrazione del caricatore automatico del compositore in Magento


19

Quindi il compositore è fantastico e c'è molto codice nel repository packagist del compositore che rende più semplice la scrittura delle estensioni di Magento.

Il problema che sto affrontando è come impostare (in modo pulito) il caricamento automatico.

Per impostazione predefinita, i pacchetti del compositore vengono installati in / vendor e all'interno di quella directory è presente un file autoload.php che imposta il caricamento della classe per i pacchetti gestiti del compositore.

Quindi quale sarebbe il modo migliore per richiedere il file '/vendor/autoload.php' del compositore? Ciò dovrebbe funzionare sia per il webstore che per gli script di shell. C'è un evento osservatore che posso toccare per fare il request_once?

Saluti!


Nessun indizio se github.com/magento-hackathon/magento-composer-installer è di qualche aiuto qui. Penso che sia abbastanza indipendente. Penso che provi a installare pacchetti non Magento con il compositore e vuoi fondamentalmente averli in lib /
Alex

Sì, puoi impostare il compositore per l'installazione su lib se lo desideri, ma voglio mantenere le librerie del compositore / librerie del mago se possibile. Anche nel compositore puoi avere cose ordinate come il caricamento automatico di classe che non si adatta al meccanismo di caricamento automatico di Mage.
Aaron Bonner,

1
+1. Sembra che uno dei primi invii di eventi da Mage.php dovrebbe fare il trucco ...?
kalenjordan

So che è stata data risposta molto tempo fa, ma un'altra opzione è quella di includere il caricatore automatico del fornitore nel file index.php (prima che require_once $mageFilenamevenga chiamato). Funziona bene con le installazioni client e non richiede affatto la riscrittura dei file.
Joseph a SwiftOtter,

Bene, stai hackerando un file core, index.php. Quando esegui l'upgrade, dovrai ricordare di aver aggiunto quella riga di codice a index.php.
Aaron Bonner,

Risposte:


15

Il caricatore automatico Magento è registrato in Mage.php.

Se vuoi farlo in un proprio modulo, dovresti prendere il primo evento possibile e richiedere il caricatore automatico lì

Secondo l'analisi di Alan questo sarebbe resource_get_tablename- ma devi assicurarti di gestire questo evento una sola volta.

La soluzione rapida e sporca sarebbe quella di patchare Mage.php(l'inizio del file) - ma questo sta hackerando il core.

Inoltre abbiamo il modulo Magento-PSR-0-Autoloader , che offre un modo per aggiungere il caricamento automatico dei compositori tramite la configurazione. È un'implementazione di base che utilizza l' resource_get_tablenameevento.


Grazie Alex, è perfetto. Avevo patchato mage.php ma non volevo metterlo in produzione. osservando resource_get_tablename ha funzionato bene!
Aaron Bonner,

4
Anche Vinai ha avuto un grande suggerimento di inserire Varien_Autoload nel pool di codici locale e di inserire lì il codice necessario che evita costosi eventi di osservazione e corregge direttamente il codice core.
Aaron Bonner,

1
"Semplice implementazione dell'esempio precedente: github.com/thijssnowcountry/magento1_composer_loader " - @ user2594875
Fabian Schmengler
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.