Magento 2: ไม่รวมคลาสจากการสร้างตัวดัก


9

ใน Magento 2 (beta9 ขึ้นไป) คุณสามารถเรียกใช้คำสั่งนี้php bin/magento setup:di:compileและตัวดักทั้งหมดโรงงานและผู้รับมอบฉันทะ (และอาจจะอื่น ๆ ) จะถูกสร้างขึ้นในvar/generationโฟลเดอร์สำหรับคลาสทั้งหมดที่คุณมีในอินสแตนซ์วีโอไอพีของคุณ
สิ่งนี้มีประโยชน์สำหรับสภาพแวดล้อมจริงเพราะมิฉะนั้นคลาสที่กล่าวถึงข้างต้นจะถูกสร้างขึ้นที่รันไทม์เมื่อจำเป็นและอาจส่งผลกระทบต่อประสิทธิภาพการทำงาน
มีวิธียกเว้นคลาสบางส่วนจากสคริปต์นี้หรือไม่ดังนั้นตัวดักจับจะไม่ถูกสร้างเมื่อเรียกใช้คำสั่งหรือไม่
ตัวอย่างเช่น: ฉันต้องการให้คอนโทรลเลอร์Magento\Backend\Controller\Adminhtml\Dashboard\RefreshStatisticsไม่ได้สร้างตัวดัก


ทำไมคุณต้องการสิ่งนี้
Anton Kril

@AntonKril หยุดถามคำถามและให้คำตอบกับฉัน: D ตอนนี้จริงจังฉันพยายามลบบางโมดูลและเมื่อทำเช่นนั้นsetup:di:compileล้มเหลวเนื่องจากบางผู้ปกครองหายไปเรียน คลาสที่ขยายคลาสที่หายไปเหล่านั้นยังคงมีอยู่ แต่ไม่ได้ใช้โดยแอปพลิเคชัน และฉันไม่สามารถลบออกได้เนื่องจากอยู่ในโมดูลที่ฉันต้องการ ดูคำอธิบายแบบเต็มด้านล่าง: magento.stackexchange.com/questions/69040/…
Marius

คำตอบ:


7

สำหรับการเรียกใช้จาก CLI อย่างน้อยในรุ่นก่อนหน้านี้มีexclude-patternพารามิเตอร์ มันถูกเพิ่มเพื่อหลีกเลี่ยงปัญหาเมื่อคลาสไม่สามารถประมวลผลได้อย่างถูกต้องเช่นมันเกิดขึ้นเช่นกับคลาส magento1 คำสั่งและอาร์กิวเมนต์อาจมีการเปลี่ยนแปลงโดยแปลงเป็นคำสั่งคอนโซล

แต่ฉันไม่แน่ใจว่าเป้าหมายของคุณคืออะไรดังนั้นฉันจึงไม่สามารถพูดได้ว่านี่เป็นทางออกที่ดีในการใช้งาน


นี่คือสิ่งที่ฉันพยายามทำ ฉันลบบางโมดูลเพื่อดูว่าฉันไปได้ไกลแค่ไหน ในบรรดาโมดูลเหล่านี้เป็นReportโมดูล แต่เนื่องจากข้อต่อแน่นระหว่างโมดูลรายงานและส่วนแบ็คเอนด์ยังคงมีคลาสในโมดูลแบ็กเอนด์ที่ขึ้นอยู่กับคลาสโมดูลรายงาน ฉันพบวิธีที่จะไม่ใช้พวกเขา แต่เนื่องจากคำสั่ง di แยกวิเคราะห์ไฟล์มันจะต้องผ่านชั้นเรียน "ละเว้น" และพยายามสร้างตัวดัก แต่สิ่งนี้ล้มเหลวเนื่องจากMagento\Backend\Controller\Adminhtml\Dashboard\RefreshStatisticsไม่มีตัวอย่างคลาสพาเรนต์ ดังนั้นฉันต้องการวิธีที่จะยกเว้นสิ่งนี้
Marius

มันเห็นว่าในแนวทางคอนโซลคำสั่งไม่มีexclude-patternพารามิเตอร์ หรืออย่างน้อยฉันก็ไม่พบมัน DiCompileCommand::configureผมมองใน
Marius

ฉันเห็นว่าคุณสามารถเพิ่มปัญหาที่ถามถึงการทำงานนี้โดยอ้างถึง PR นี้: github.com/magento/magento2/pull/986 หรือคุณใช้เซ็ตการแก้ไขที่นั่นเพื่อทดสอบวิธีการเพิ่มชั่วคราวสำหรับงานสร้างท้องถิ่นของคุณ
Flyingmana
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.