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.