การสกัดกั้นตั้งใจที่จะเป็นวิธีที่ต้องการเมื่อจัดการกับการเปลี่ยนพฤติกรรมของวิธีการดั้งเดิมใน Magento2 ในฐานะผู้สังเกตการณ์ใน magento1 หรือไม่?
https://wiki.magento.com/display/MAGE2DOC/Using+Interception
การสกัดกั้นตั้งใจที่จะเป็นวิธีที่ต้องการเมื่อจัดการกับการเปลี่ยนพฤติกรรมของวิธีการดั้งเดิมใน Magento2 ในฐานะผู้สังเกตการณ์ใน magento1 หรือไม่?
https://wiki.magento.com/display/MAGE2DOC/Using+Interception
คำตอบ:
ฉันไม่คิดว่าการสกัดกั้นมีวัตถุประสงค์เพื่อแทนที่ผู้สังเกตการณ์เหตุการณ์
ยังมีเหตุการณ์ที่ส่งมอบในรหัส Magento2
ตัวดักจับเป็นเพียงวิธีการประมวลผลอินพุตหรือเอาต์พุตของเมธอด
หรือพฤติกรรมของวิธีการ (ใช้ตัวaround
ดัก) แต่จากสิ่งที่ฉันเข้าใจว่านี่เป็นวิธีที่มีความเสี่ยง
ฉันคิดว่ามันเป็นวิธีที่หลีกเลี่ยงการเขียนคลาสมากที่สุด
ใน Magento 1.x หากคุณต้องการแก้ไขผลลัพธ์ของวิธีที่คุณต้องการเพื่อแทนที่คลาสที่มีและวิธีนั้น
ตอนนี้คุณก็สามารถใช้before
, after
หรือaround
ดักในการจัดการข้อมูล
ด้วยผู้สังเกตการณ์คุณสามารถจัดการข้อมูลในบางจุดคงที่ของวิธีการไม่ใช่วิธีการแบบเต็ม
ในความคิดของฉันการใช้ผู้สังเกตการณ์เมื่อเป็นไปได้ยังคงเป็นวิธีที่ดีที่สุดในการปรับแต่งแม้ใน Magento 2
การสกัดกั้นคือวิวัฒนาการของเหตุการณ์ เป้าหมายคือเพื่อให้นักพัฒนาสามารถเขียนโค้ดของเขาได้โดยไม่ต้องคิดถึงจุดส่วนขยาย
ด้วยเหตุการณ์ที่คุณต้องคิดเกี่ยวกับสถานที่ที่คุณทำ Mage :: dispatchEvent () เพื่อให้โมดูลของคุณจะสามารถปรับแต่งได้
การสกัดกั้นช่วยให้คุณไม่ต้องคิดถึงเรื่องนี้ คุณเพียงแค่เขียนตรรกะทางธุรกิจของคุณ ทุกวิธีการโทรเป็นเหตุการณ์ ดังนั้นหากคุณเขียนโค้ดของคุณในลักษณะที่เหมาะสมกับวัตถุมันจะถูกปรับแต่งได้อย่างเต็มที่โดยการออกแบบ
แต่เหตุการณ์ให้บริการระดับสูงกว่าการให้บริการส่วนต่อประสานที่พูดภาษา ดังนั้นกิจกรรมจะอยู่ใน Magento 2
ขณะนี้ยังมีตัวเลือกในการฟังเหตุการณ์เฉพาะและฉันขอแนะนำว่าตัวดักรับเป็นเพียงการแทนที่การเขียนใหม่ ฉันจะยังคงใช้เหตุการณ์เมื่อมีอยู่ในสถานที่สำหรับความต้องการของคุณ
หากคุณดูที่รีลีสปัจจุบันบางโมดูลมีevents.xml
ไฟล์ที่มีคำจำกัดความ
<event name="cms_wysiwyg_images_static_urls_allowed">
<observer name="catalog_wysiwyg" instance="Magento\Catalog\Model\Observer" />
</event>