Ada berbagai alasan untuk menghasilkan entitas yang berbeda:
Proxy - digunakan untuk memuat malas. Tetapi setiap jenis membutuhkan kelas proksi yang terpisah sehingga akan mengganggu bagi pengembang untuk menuliskannya secara manual sehingga Magento menghasilkannya. Anda hanya akan menemukan referensi ke Proxy di di.xml
Factory - adalah kelas yang digunakan untuk membuat non-injeksi (entitas). Sama seperti proxy. PHP belum memiliki generik, jadi kami menghasilkan otomatis pabrik untuk tidak membuat pengembang menulis kode boilerplate. Anda akan berinteraksi dengan pabrik di seluruh kode Magento. Kemungkinan besar Anda akan membutuhkan pabrik sendiri untuk entitas Anda. Cukup minta pabrik yang sesuai dalam konstruktor dan itu akan dihasilkan pada proses berikutnya atau selama proses kompilator.
Interceptor - adalah kelas infrastruktur, yang digunakan oleh komponen Interception. Seperti yang dilihat Flyingmana dan Phil Winkle, Anda sebaiknya tidak berinteraksi dengan mereka.
Ada banyak entitas lain yang dihasilkan (seperti Logger untuk mode profil grafik objek) tetapi 3 ini yang paling penting.
Magento 2 juga dapat dikompilasi. Kompilasi membuat DI dan Interception lebih cepat. Semua pembuatan dan kompilasi kode dapat dilakukan dengan dev / tools / Magento / Tools / Di / compiler.php
Magento\Cms\Block\Block
dalam konstruktor contoh\Magento\Cms\Model\BlockFactory
digunakan. Kelas itu tidak ada dalam kode. Hanya ditemukan divar/generation
. Jadi jika saya melakukan modul serupa saya mungkin harus menggunakan kelas yang sama.