Yanıtlar:
Müdahalenin olay gözlemcilerinin yerini almayı amaçladığını düşünmüyorum.
Magento2 kodunda hala gönderilen olaylar var.
Durdurucular sadece bir yöntemin girdisini veya çıktısını işlemenin bir yoludur.
Ya da bir yöntemin davranışı ( around
önleme aracını kullanarak ) ama anladığım kadarıyla bu riskli bir yaklaşımdır.
Sınıf yeniden yazma işlemlerinden mümkün olduğunca kaçınmanın bir yolu olduğunu düşünüyorum.
Magento 1.x'te, bir yöntemin sonucunu değiştirmeniz gerekiyorsa, içeren sınıfı ve yöntemin kendisini geçersiz kılmanız gerekir.
Şimdi sadece kullanabilirsiniz before
, after
ya da around
veriyi işlemek için önleyicilerin.
Gözlemcilerle, tam yöntemin kendisini değil, bir yöntemin belirli sabit noktalarındaki verileri işleyebilirsiniz.
Kanımca, mümkünse gözlemcileri kullanmak Magento 2'de bile özelleştirme için hala en iyi yaklaşım.
Müdahale, olayların evrimidir. Amacı, bir geliştiricinin kodunu uzantı noktalarını düşünmeden yazmasına izin vermektir.
Etkinliklerde modülünüzün özelleştirilebilmesi için Mage :: dispatchEvent () yaptığınız yerleri düşünmeniz gerekir.
Müdahale bunu düşünmemenizi sağlar. Sadece iş mantığınızı yazıyorsunuz. Her yöntem çağrısı bir olaydır. Dolayısıyla, kodunuzu uygun bir nesne yönelimli şekilde yazarsanız, tasarımla tamamen özelleştirilebilir olacaktır.
Ancak etkinlikler, iş dilini konuşan daha üst düzey bir Hizmet Sağlama Arabirimi sağlar. Yani olaylar Magento 2'de kalacak.
Şu anda belirli olayları dinleme seçeneği var ve önleyicilerin sadece yeniden yazmaların yerini almasını öneririm. İhtiyaçlarınız için bir tane varken olayları kullanmaya devam ediyorum.
Mevcut sürüme bakarsanız, bazı modüllerde events.xml
tanımları içeren dosyalar bulunur.
<event name="cms_wysiwyg_images_static_urls_allowed">
<observer name="catalog_wysiwyg" instance="Magento\Catalog\Model\Observer" />
</event>