Mengintegrasikan autoloader komposer ke Magento

19

Jadi komposer itu hebat, dan ada banyak kode dalam repositori packagist komposer yang membuat menulis ekstensi Magento lebih mudah.

Masalah yang saya hadapi, adalah cara terbaik untuk (bersih) mengatur autoloading.

Secara default, paket komposer diinstal ke / vendor, dan di dalam direktori itu terdapat file autoload.php yang mengatur pemuatan kelas untuk paket yang dikelola komposer.

Jadi, apa cara terbaik untuk meminta file '/ vendor/autoload.php' dari komposer? Ini harus bekerja untuk skrip webstore dan shell. Apakah ada acara pengamat yang dapat saya ketuk untuk melakukan require_once?

Bersulang!

Aaron Bonner
sumber
Tidak ada petunjuk jika github.com/magento-hackathon/magento-composer-installer dapat membantu di sini. Saya pikir itu sangat tidak berhubungan. Saya pikir Anda mencoba menginstal paket non-Magento dengan komposer dan pada dasarnya ingin memilikinya di lib /
Alex
Ya Anda dapat mengatur komposer untuk diinstal ke lib jika Anda mau, tetapi saya ingin memisahkan komposer libs / mage libs jika memungkinkan. Juga di komposer Anda dapat memiliki hal-hal yang rapi seperti autoloading yang dipetakan yang tidak cocok dengan mekanisme autoloader Mage.
Aaron Bonner
1
+1. Sepertinya salah satu kiriman acara awal dari Mage.php harus melakukan trik ...?
kalenjordan
Saya tahu bahwa ini dijawab sejak lama, tetapi opsi lain adalah memasukkan vendor autoloader ke file index.php Anda (sebelum require_once $mageFilenamedipanggil). Ini berfungsi dengan baik untuk instalasi klien, dan sama sekali tidak perlu menulis ulang file.
Joseph at SwiftOtter
Yah Anda meretas file inti, index.php. Saat Anda memutakhirkan, Anda harus ingat bahwa Anda menambahkan baris kode itu ke index.php.
Aaron Bonner

Jawaban:

15

Autoloader Magento terdaftar di Mage.php.

Jika ingin melakukan ini dalam modul sendiri, Anda harus mengambil acara pertama yang mungkin dan memerlukan autoloader di sana

Menurut analisis Alan, ini adalah resource_get_tablename- tetapi Anda harus memastikan bahwa Anda hanya menangani acara ini sekali saja.

Solusi cepat dan kotor adalah menambal Mage.php(bagian paling awal dari file) - tetapi ini meretas inti.

Kami juga memiliki modul Magento-PSR-0-Autoloader , yang menawarkan cara untuk menambahkan komponis autoloading melalui konfigurasi. Ini adalah implementasi dasar yang memanfaatkan resource_get_tablenameacara.

Alex
sumber
Terima kasih Alex, itu sempurna. Saya telah menambal mage.php tetapi tidak ingin memproduksinya. mengamati resource_get_tablename bekerja dengan baik!
Aaron Bonner
4
Vinai punya saran bagus juga untuk meletakkan Varien_Autoload di kumpulan kode lokal dan meletakkan kode yang diperlukan di sana yang menghindari peristiwa pengamat yang mahal dan menambal kode inti secara langsung.
Aaron Bonner
1
"Implementasi sederhana dari contoh di atas: github.com/thijssnowcountry/magento1_composer_loader " - @ user2594875
Fabian Schmengler