คุณจะไม่พบคำตอบที่ดีชัดเจนชัดเจนขึ้นตรงนี้ คุณควรจัดส่งกิจกรรมในโมดูลของคุณซึ่งคุณและผู้ใช้ต้องการและถ้าคุณไม่สามารถคิดได้ทุกที่ที่ต้องการคุณไม่จำเป็นต้องจัดส่ง วีโอไอพีเองปล่อยกิจกรรมมากมายในสถานที่ที่แตกต่างกันมากมาย (คอนโทรลเลอร์ล่วงหน้า / ส่งการโพสต์การดำเนินการที่ไม่เหมาะสม ฯลฯ ) ที่โมดูลของคุณจะส่งกิจกรรมที่มีประโยชน์จำนวนหนึ่งโดยที่คุณไม่ต้องทำอะไรเลย
เนื่องจากไม่น่าพอใจคุณต้องการให้โมดูลของคุณส่งเหตุการณ์เมื่อมีการกระทำบางอย่างที่โมดูลของคุณใช้เพื่อให้ผู้ใช้ของคุณอาจต้องการเพิ่มรายการไปยังลบรายการจากเปลี่ยนแปลงหรือดำเนินการแยกต่างหากโดยไม่ขึ้นกับการกระทำดั้งเดิม ตัวอย่างเช่นMagento มีvisitor_init
กิจกรรมที่ไม่ได้เป็นส่วนหนึ่งของชุดกิจกรรมมาตรฐานที่สร้างขึ้นโดยอัตโนมัติ เหตุการณ์นี้ทำให้โปรแกรมเมอร์สามารถแก้ไข objet ของผู้เยี่ยมชมได้ก่อนที่ Magento จะบันทึกข้อมูล สิ่งเหล่านี้ไม่มีทางที่ผู้พัฒนาโมดูลดั้งเดิมจะรู้อย่างแน่นอนนี่คือสิ่งที่จำเป็นต้องมีการเพิ่มเหตุการณ์ - มันอาจมาจากการร้องขอคุณสมบัติและ / หรือการสัมภาษณ์กับผู้ใช้ระบบ รู้ว่าผู้ใช้ของคุณต้องการอะไรและถ้ามันเป็นไปไม่ได้ / ในทางปฏิบัติในการสร้าง UI / UX เพื่อให้พวกเขาทำมันผ่านทางผู้ดูแลระบบให้เพิ่มเบ็ดเหตุการณ์เพื่อให้โปรแกรมเมอร์คนอื่นสามารถทำเพื่อพวกเขาได้
การเพิ่มกิจกรรมยังเป็นวิธีที่ประหยัดในการเปิดใช้งานนักพัฒนา (ทั้งผู้ใช้ของคุณหรือแม้แต่ทีมของคุณ ) เพื่อเพิ่มฟังก์ชั่นบางอย่างลงในโค้ดที่ดูน่ากลัวซึ่งทุกคนกลัวที่จะสัมผัส วางdispatchEvent
สายของคุณไว้ที่กึ่งกลางของรหัสเชื่อมต่อและคุณสามารถเพิ่มฟังก์ชันการทำงานของคุณโดยไม่รบกวนรหัสในขอบเขตเดิม [บรรณาธิการ: นอกจากนี้คุณควร refactor รหัสที่น่ากลัวในบางจุด]
ประสิทธิภาพการทำงานที่ชาญฉลาดการเพิ่มกิจกรรมเพื่อจัดส่งจะขึ้นอยู่กับตำแหน่งที่คุณเพิ่ม เมื่อคุณเรียกใช้dispatch
เหตุการณ์วีโอไอพีจะต้องทำการเรียก PHP เพิ่มเติมอีกสองสามครั้งสอบถามการกำหนดค่าสำหรับผู้สังเกตการณ์ที่กำหนดค่าไว้แล้วเรียกผู้สังเกตการณ์ ทำครั้งเดียวนี่คือการเพิ่มราคาถูกในขอบเขตของการจัดส่ง Magento มาตรฐาน อย่างไรก็ตามทำซ้ำหลายครั้ง (พูดก่อนแสดงทุกบล็อค) สิ่งนี้อาจเพิ่มขึ้น ไม่มีกฎง่ายๆที่ดี - เช่นเคยคำตอบที่ถูกต้องคือโปรไฟล์
ในที่สุด w / r / t Magento 2 ก็ยังเร็วเกินไปที่จะพูด ทั้งหมดข้างต้นยังคงใช้ - อย่างไรก็ตามระบบปลั๊กอินเพิ่มรอยยับเล็กน้อย ปลั๊กอินจากมุมมองหนึ่งเป็นวิธีการสร้างเหตุการณ์เช่นพฤติกรรมสำหรับการเรียกใช้วิธีสาธารณะใน Magento ในทางทฤษฎีหากคุณออกแบบชั้นเรียนของคุณอย่างถูกต้องคุณไม่จำเป็นต้องมีเหตุการณ์ อย่างไรก็ตามในทางปฏิบัติการวางเหตุการณ์ลงในรหัสวิธีการป้องกันหรือแบบส่วนตัวจะเป็นวิธีแก้ปัญหาที่น่าดึงดูดสำหรับนักพัฒนา Magento เมื่อทางเลือกนั้นเป็นกระบวนการฟื้นฟูที่ยาวนาน นอกจากนี้การสร้างเหตุการณ์ที่มีชื่อเฉพาะมักจะสามารถสร้างประสบการณ์ที่เป็นมิตรสำหรับนักพัฒนาโดยใช้โมดูลของคุณ
หวังว่าจะช่วย!