วัตถุประสงค์ของวัตถุคืออะไรในตัวสร้างคลาสใด DI บริบททำงานอย่างไร


23

ในคอนสตรัคเตอร์ของคลาสส่วนใหญ่วัตถุบริบทจะถูกส่งผ่าน ฉันไม่เข้าใจว่า Obj บริบทนี้ทำงานอย่างไร ฉันยังสังเกตเห็นว่าบางครั้งสิ่งนี้ถูกส่งผ่านไปยังคอนสตรัคเตอร์ของผู้ปกครองในชั้นล่าง

public function __construct(
    \Magento\Framework\App\Action\Context $context,
    \Magento\Catalog\Model\Design $catalogDesign,
    \Magento\Catalog\Model\Session $catalogSession,
....
    parent::__construct(
        $context,
        $layoutFactory,

คุณกรุณาอธิบายว่าวัตถุบริบทนี้ทำงานอย่างไร

คำตอบ:


30

โปรดทราบว่ามีวัตถุบริบทที่แตกต่างกันในกรณีนี้\Magento\Framework\App\Action\Contextและเพื่อทำความเข้าใจคุณควรอ่านว่า "ActionContext" เพราะมันหมายถึงบริบทของแอปพลิเคชันที่ดำเนินการ กล่าวอีกนัยหนึ่งมันช่วยให้คุณสามารถเข้าถึงวัตถุทั้งหมดที่มีสถานะแอปพลิเคชันที่การดำเนินการควบคุมต้องการเช่นรีจิสทรีหรือวัตถุคำขอ

คลาสบริบทไม่มีฟังก์ชันการทำงานของตนเองมันเป็นเพียงคอนเทนเนอร์สำหรับวัตถุอื่น คุณสามารถเห็นพวกเขาเป็นทางลัดเพื่อไม่ให้มี 20 พารามิเตอร์ในการดำเนินการควบคุมแต่ละ พารามิเตอร์ทั่วไปทั้งหมดจะรวมอยู่ในวัตถุบริบท


ฉันจะรู้ได้อย่างไรว่าวัตถุใดบรรจุอยู่ด้วยกัน$context?
LucScu

@LucaS ดูรหัสต้นฉบับของพวกเขา คุณจะพบคลาสที่มีอยู่ในคอนสตรัคเตอร์บริบท
Fabian Schmengler

15

มีการแนะนำวัตถุบริบทเพื่อแยกนักพัฒนาบุคคลที่สามออกจากการเปลี่ยนแปลงในตัวสร้างคลาสนามธรรม

ในชั้นเรียน Magento 1 Abstract ที่มีพฤติกรรม "ผู้ช่วย" จำนวนมากถือว่าเป็น API ที่สะดวกสำหรับตัวขยายคลาส เรื่องนี้ทำให้เกิดจำนวนมากของวิธีการและการอ้างอิงนัยในคลาสนามธรรม ( AbstractModel, AbstractBlock, AbstractAction)

ใน API ที่สืบทอดมาจากวีโอไอพี 2 (SPIs ที่แม่นยำยิ่งขึ้น) นั้นไม่ได้รับการสนับสนุน แต่ยังคงมี API แบบดั้งเดิมจำนวนมาก เริ่มแรกเราวางแผนที่จะค่อยๆลบพฤติกรรมพิเศษออกจากคลาสนามธรรม และเพื่อไม่ทำลายตัวขยายทั้งหมดเมื่อเราจะลบการพึ่งพาบางส่วนออกจากตัวสร้างเราแนะนำวัตถุบริบท

แผนปัจจุบันคือการละทิ้ง APIs ที่ใช้การสืบทอดด้วย API ที่อิงกับอินเตอร์เฟสในบางประเด็น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.