การรวมระบบโหลดอัตโนมัติของนักแต่งเพลงใน Magento


19

ดังนั้นนักแต่งเพลงเป็นที่น่ากลัวและมีจำนวนมากของรหัสในเพลงของpackagistพื้นที่เก็บข้อมูลที่ทำให้การเขียนนามสกุลวีโอไอพีได้ง่ายขึ้น

ปัญหาที่ฉันกำลังเผชิญอยู่นั้นเป็นวิธีการที่ดีที่สุดในการโหลดอัตโนมัติ (หมดจด)

ตามค่าเริ่มต้นแพ็คเกจผู้แต่งจะถูกติดตั้งไปยัง / ผู้ขายและภายในไดเรกทอรีนั้นคือไฟล์ autoload.php ซึ่งตั้งค่า classloading สำหรับแพ็คเกจที่จัดการโดยผู้แต่ง

ดังนั้นวิธีที่ดีที่สุดในการใช้ไฟล์ '/vendor/autoload.php' ของผู้แต่ง สิ่งนี้จะต้องใช้งานได้กับทั้ง webstore และเชลล์สคริปต์ มีเหตุการณ์ผู้สังเกตการณ์ฉันสามารถแตะเพื่อทำ require_once ได้หรือไม่

ไชโย!


เบาะแสหากgithub.com/magento-hackathon/magento-composer-installerไม่มีความช่วยเหลือใด ๆ ที่นี่ ฉันคิดว่ามันไม่เกี่ยวข้องเลยทีเดียว ฉันคิดว่าคุณพยายามติดตั้งแพ็คเกจที่ไม่ใช่ Magento ด้วยนักแต่งเพลงและต้องการให้พวกเขามี lib /
Alex

ใช่คุณสามารถตั้งค่าผู้แต่งให้ติดตั้งเป็น lib หากคุณเลือก แต่ฉันต้องการแยก libs / mage libs นักแต่งเพลงแยกออกถ้าเป็นไปได้ นอกจากนี้ในนักประพันธ์คุณสามารถมีสิ่งที่เรียบร้อยเช่นการโหลดอัตโนมัติคลาสที่ไม่เหมาะกับกลไกการโหลดอัตโนมัติของ Mage
Aaron Bonner

1
+1 ดูเหมือนว่าหนึ่งในเหตุการณ์แรกที่ถูกส่งมาจาก Mage.php ควรจะใช้เล่ห์เหลี่ยม ... ?
kalenjordan

ฉันรู้ว่าสิ่งนี้ได้รับคำตอบมานานแล้ว แต่อีกทางเลือกหนึ่งคือการรวมออโต้โหลดผู้จำหน่ายในไฟล์ index.php ของคุณ (ก่อนหน้าrequire_once $mageFilenameนี้เรียกว่า) สิ่งนี้ใช้ได้ดีสำหรับการติดตั้งไคลเอนต์และไม่ต้องเขียนไฟล์ใหม่เลย
โจเซฟที่ SwiftOtter

คุณกำลังแฮ็คไฟล์หลัก index.php เมื่อคุณอัพเกรดคุณจะต้องจำไว้ว่าคุณเพิ่มบรรทัดของรหัสนั้นลงใน index.php
แอรอนบอนเนอร์

คำตอบ:


15

โหลดอัตโนมัติวีโอไอพีเป็น บริษัท Mage.phpจดทะเบียนใน

หากต้องการทำเช่นนี้ในโมดูลของตัวเองคุณควรคว้าเหตุการณ์แรกที่เป็นไปได้และต้องการให้โหลดอัตโนมัติที่นั่น

จากการวิเคราะห์ของอลันสิ่งนี้จะเป็นresource_get_tablename- แต่คุณต้องทำให้แน่ใจว่าคุณจัดการเหตุการณ์นี้เพียงครั้งเดียวเท่านั้น

วิธีแก้ปัญหาที่รวดเร็วและสกปรกก็คือการแก้ไขMage.php(จุดเริ่มต้นของไฟล์) - แต่นี่เป็นการแฮ็คคอร์

นอกจากนี้เรายังมีโมดูลMagento-PSR-0-Autoloaderซึ่งนำเสนอวิธีเพิ่มนักประพันธ์เพลงอัตโนมัติผ่านการตั้งค่า การใช้งานขั้นพื้นฐานซึ่งทำให้การใช้งานของresource_get_tablenameเหตุการณ์


ขอบคุณอเล็กซ์ที่สมบูรณ์แบบ ฉันมีแพทช์ mage.php แต่ไม่ต้องการใส่ในการผลิต การสังเกต resource_get_tablename ทำงานได้ดี!
Aaron Bonner

4
Vinai มีข้อเสนอแนะที่ดีเช่นกันที่จะนำ Varien_Autoload ในกลุ่มรหัสท้องถิ่นและวางรหัสที่จำเป็นที่นั่นเพื่อหลีกเลี่ยงเหตุการณ์ผู้สังเกตการณ์ราคาแพงและการแก้ไขรหัสหลักโดยตรง
Aaron Bonner

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