Magento 2'de hangi sınıflar üretiliyor?


9

Magento 2'de otomatik olarak oluşturulan ve depolanan bir grup sınıf vardır var/generationve bunlar çekirdek kodda kullanılır.
Çekirdek modüllerden birini çoğaltarak özel bir modül oluşturmaya çalışırken, modülüm için de üretilen bazı sınıflar olduğunu gördüm.
Oluşturulan sınıflarda ben proxy, önleme, fabrikalar gördüm ....

Otomatik olarak oluşturulan sınıfların veya sınıf türlerinin tam bir listesi var mı?
Ve yan soru olarak ... ne zaman / nerede üretiliyorlar?

Yanıtlar:


9

Farklı varlıklar oluşturmak için farklı nedenler vardır:

Proxy - tembel yükleme için kullanılır. Ancak her tür ayrı proxy sınıfı gerektirir, böylece geliştiricilerin bunları manuel olarak yazmaları can sıkıcı olur, böylece Magento bunları oluşturur. Sadece Proxies referanslarını sadece di.xml dosyasında bulabilirsiniz

Fabrika - enjekte edilemeyen (varlık) oluşturmak için kullanılan bir sınıftır. Proxy'lerle aynı. PHP'nin henüz jenerikleri yok, bu yüzden geliştiricinin kaynak kodu yazmasını sağlamak için fabrikaları otomatik olarak oluşturuyoruz. Magento kodundaki fabrikalarla etkileşime gireceksiniz. Muhtemelen varlıklarınız için kendi fabrikalarınıza ihtiyaç duyacaksınız. Yapıcıda ilgili fabrikayı isteyin ve bir sonraki çalıştırmada veya derleyici çalışması sırasında üretilecektir.

Durdurucu - Durdurma bileşeni tarafından kullanılan bir altyapı sınıfıdır. Flyingmana ve Phil Winkle'ın fark ettikleri gibi, onlarla bir şekilde etkileşime girmemeniz gerekir.

Oluşturulan başka bir grup var (nesne grafiği profil oluşturma modu için Logger gibi), ancak bu 3 en önemlisidir.

Magento 2 de derlenebilir. Derleme , DI ve Interception'ı daha hızlı hale getirir. Tüm kod oluşturma ve derleme dev / tools / Magento / Tools / Di / compiler.php ile yapılabilir


2

Konseptten:

Hangi tür sınıfların otomatik olarak oluşturulduğunu bilmenize gerek yoktur, çünkü asla dokunmanıza veya kullanmanıza gerek yoktur, hatta yapmanız gerekmiyor.

Anında üretilirler (hala?), Ancak daha sonra cli komutu veya benzeri yoluyla üretilmelidirler.

Hangi türlerin var olduğu listesi, iç parçalar yeni bir parçaya ihtiyaç duyduğunda her zaman büyüyebilir. Ancak bunlara erişim her zaman normal dokümante edilmiş API'ların (genellikle işlev çağrıları olarak bilinir) arkasında gizli olur


1
"Ya da onları kullanma" konusunda emin değilim. İşte bir örnek: Magento\Cms\Block\BlockYapıcıda bir örneği \Magento\Cms\Model\BlockFactorykullanılır. Bu sınıf kodun hiçbir yerinde yok. Sadece içinde bulunur var/generation. Benzer bir modül yapıyorsam benzer bir sınıf kullanmam gerekebilir.
Marius

2

Magento, yeni platforma bakış açısı odaklı yaklaşımı böyle üretir; dinamik olarak göndermek yerine önce, olayları ve sonrasındaki "olayları" oluşturarak. Bu, programcı için kolaylık ve platformun performansı arasında bir denge kurar.

Otomatik bağımlılık enjeksiyonu gibi bazı teknikler, yansıma yoluyla yürütmek yerine üretilen sınıflara düzleştirilir - yine - bu, performansı iyileştirmek için bir tekniktir.


"Neden?" ve nerede?".
Marius
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.