เหตุใดนักพัฒนา Magento จึงไม่ใช้ Zend Framework 2 สำหรับ Magento 2


21

Magento จะยังคงใช้ Zend Framework ดั้งเดิม (รุ่น 1) สำหรับ Magento 2 ต่อไป (ที่มา: Magento 2 และ Zend Framework 2 )

ดูว่า Magento 2 จะไม่สามารถใช้งานร่วมกับ Magento 1 ได้อย่างไรทำไมพวกเขาถึงไม่อัพเกรด Zend Framework 2

ฉันหวังว่าจะได้คำตอบทางเทคนิคที่เชื่อถือได้


คำถามนี้เป็น 99% คล้ายกับmagento.stackexchange.com/questions/33259/... แต่ไม่สามารถตั้งค่าเป็นซ้ำเนื่องจากผู้ถามก่อนหน้านี้ไม่ยอมรับ @Marius answer อย่างไรก็ตามฉันอยากรู้คำตอบ ขอให้เรารอคำตอบอย่างเป็นทางการว่า "ทำไม" :-)
Rajeev K Tomy

4
เฉพาะแกนกลางเท่านั้นที่สามารถตอบคำถามนี้ได้อย่างแม่นยำ มาเรียก @AntonKril กันเถอะ
Marius

@Marius: ใช่คำถามนี้เป็นข้อสงสัยพื้นฐานที่จะมาถึงใจของเราทุกครั้งที่เราเริ่มเรียนรู้วีโอไอพี 2 (โดยเฉพาะผู้ที่คุ้นเคยกับวีโอไอพี 1 *) สิ่งนี้ไม่ควรเก็บเป็นความลับ ควรเปิดเผยค่อนข้าง ให้เราหวังว่าเจ้าหน้าที่จะให้คำตอบสำหรับคำถามนี้
Rajeev K Tomy

คำตอบ:


32

เพื่อทำซ้ำส่วนที่สำคัญข้างต้นแอปพลิเคชั่น Magento 2 ควรใช้ Magento 2 APIs อย่างเป็นทางการไม่ใช่ Zend โดยตรง นักพัฒนาจึงไม่ควรสนใจสิ่งที่เราสร้าง

เพื่อสอบถามจิตใจ Magento 2 ใช้บิตจากกรอบที่แตกต่างกัน เราใช้การเข้าถึงฐานข้อมูลจาก Zend 1 เราตรวจสอบการย้ายไปที่ Doctrine แต่มันทำงานได้มากเกินไปสำหรับการเปิดตัว Magento 2.0.0 อย่างไรก็ตามเราสามารถทำได้ใน 2.1, 2.2, 3.0 หรือ ... (ยังไม่มีข้อผูกมัด) เมื่อเราไปถึงเราอาจเปลี่ยนความคิดของเราว่าจะใช้ ZF1, ZF2, หลักคำสอน ฯลฯ จากข้อมูลใหม่ที่มีให้ Magento 2 อาจมีไฟล์ YML อยู่ด้วย (หมายถึงเราใช้ส่วนหนึ่งของ Symfony) ส่วนหนึ่งของโปรแกรมติดตั้งใช้ ZF2 บางตัว (เราควรพัฒนาแอพใหม่บน ZF1 หรือไม่) แต่สิ่งนี้อาจเปลี่ยนแปลงได้ เรายังเห็นส่วนเล็ก ๆ ของ Angular ที่อาจดูน่าสนใจสำหรับ MV * ใน JavaScript

แต่ทันทีที่คุณมองสิ่งที่อยู่ภายใต้กรอบวีโอไอพีคุณอาจกำลังทำสิ่งที่ผิด รหัสแอปพลิเคชันของคุณไม่ควรสนใจ คุณควรใช้ API "อย่างเป็นทางการ" ที่จัดทำโดย Magento framework เพื่อให้เราสามารถเปลี่ยน internals ได้โดยไม่ส่งผลต่อเว็บไซต์หรือส่วนขยายลูกค้าที่มีอยู่ โดย "เป็นทางการ" เราจะทำเอกสาร API ที่ "สนับสนุน" API (ยังทำได้ไม่ดี) - เพื่อทำให้การอัพเกรดเชื่อถือได้มากขึ้นเราจะทำให้ API เหล่านี้มีเสถียรภาพมากที่สุด แต่ทำการเปลี่ยนแปลงรหัสอ้างอิง ฐานเพื่อปรับปรุงประสิทธิภาพ ฯลฯ

หมายเหตุ: ฉันไม่ได้ดูในพื้นที่นี้บ่อยนัก - คำถามจากวีโอไอพี 2 จะถูกดูในตัวติดตามปัญหา GitHub เรากำลังพยายามที่จะทำให้พวกเขามีทั้งหมดในปัจจุบัน


1
หากใช้คลาส Zend ในรหัสของเราผิด ผมสังเกตเห็นว่าวีโอไอพีเรียกบาง Zend <?php echo \Zend_Json::encode($block->getCheckoutConfig()); ?>ฟังก์ชั่นแบบคงที่ในไฟล์แม่แบบเช่น
Zvonimir Burić

1
ใช่ @ ZvonimirBurićคุณควรใช้\Magento\Framework\Json\DecoderInterfaceแทน หรือjson_encode/ json_decodeโดยตรง
nevvermind

เครื่องมือตรวจสอบความถูกต้องคืออะไร ดูเหมือนว่าจะไม่มีวีโอไอพีที่เทียบเท่ากับ Zend_Validation
Antonio Pedicini

10

คำถามถูกถามหลายครั้ง ทุกอย่างมันจะยิ่งลดลงเพื่อให้ได้ผลตอบแทนจากการลงทุน มันเป็นความพยายามอย่างมากในการโยกย้ายค่าไม่สูงและ Magento เพราะรวม ZF1 เป็นห้องสมุดในการแจกจ่ายเพียงรับผิดชอบไลบรารีนี้รวมถึงแพตช์สำหรับปัญหา ฯลฯ


2
ขอบคุณสำหรับคำตอบ Piotr คุณรู้หรือไม่ว่า ZF1 ยังคงรองรับโดย Zend หรือไม่ ฉันพบคำถามที่พบบ่อย (อาจจะล้าสมัย) (ที่นี่: framework.zend.com/about/faq ) ที่ระบุว่า: "ขณะนี้เราวางแผนที่จะรองรับ Zend Framework 1 อย่างเต็มที่จนถึงอย่างน้อยต้นปี 2014 รวมถึงการปรับปรุงการบำรุงรักษาและความปลอดภัย"

3
@Marius: magento 2 จะปกครองต่อไปอีก 2,3 ทศวรรษ (หวังว่า) ในกรณีดังที่ Tom กล่าวว่าหากการสนับสนุนของ ZF1 หมดอายุแล้วคุณจะคิดอย่างไรเกี่ยวกับอนาคตของ Magento 2 การรักษาพื้นฐานที่ล้าสมัยนั้นดีเพียงพอหรือไม่ ใครจะรู้ !
Rajeev K Tomy

5
จากการจัดการกับ PHP ฉันคาดว่า Magento มีนโยบายที่จะอนุรักษ์นิยมอย่างมากกับการเปิดตัวของพวกเขา พวกเขาต้องการรุ่นเสถียร PHP ที่เก่าแก่ที่สุดที่ยังคงได้รับการปรับปรุงความปลอดภัย พวกเขาต้องการ 5.3 จนกระทั่ง PHP ประกาศการสิ้นสุดของชีวิตในที่สุด ถ้าฉันต้องเดาฉันอาจคิดว่าแนวทางของพวกเขาใน ZF เหมือนกัน: การใช้รุ่นที่เก่าแก่ที่สุดและเสถียรที่สุดที่ยังคงมีการสนับสนุนอยู่ คำถามสำหรับฉันในฐานะความคิดเห็น programmer_rkt คือ Magento จะเปลี่ยนเป็น ZF2 เมื่อ ZF 1 ถึงจุดสิ้นสุดของชีวิตแม้ในรุ่น 2.x หรือจะรักษา ZF1 ด้วยตนเองโดยไม่มี Zend และชุมชน ZF1

3
นี่คือคำตอบที่ถูกต้อง :-)
เครื่องหมายบอกตำแหน่ง

2
ฉันไม่รู้ว่าเราจะพิจารณาอีกครั้งฉันไม่รู้ว่าเราจะไม่ทำ หากผลของการไม่ได้อยู่ใน ZF2 นั้นแข็งแกร่งที่อาจมีอิทธิพลต่อสิ่งต่าง ๆ แต่ฉันสงสัยว่าจะเป็นเช่นนั้น โปรดทราบว่าฉันไม่ได้เป็นส่วนหนึ่งของทีมผลิตภัณฑ์ดังนั้นนี่เป็นเพียงความคิดเห็นของฉัน
benmarks

2

ด้วยเหตุผลเดียวกันพวกเขาใช้ Prototype.js แทน jQuery สำหรับ Magento 1

ดูเหมือนว่า ZF1 นั้นจะเร็วกว่าสองเท่าจากนั้น ZF2 ตรวจสอบที่นี่

ปัญหาคือ ZF1 ไม่ได้รับการสนับสนุนอีกต่อไป (เท่าที่ฉันรู้) ณ ปีนี้ ฉันจะไปกับ ZF2 เป็นการส่วนตัว ฉันแน่ใจว่าพวกเขาจะเพิ่มประสิทธิภาพได้ในไม่ช้า


1
ฉันได้อ่านว่า jquery เป็นเด็กเมื่อ magento 1 เปิดตัวและ prototype.js เป็นเครื่องมือจาวาสคริปต์ที่มีชื่อเสียง สำหรับปลาตัวโตอย่างวีโอไอพีอาศัยเครื่องมือที่ไม่เป็นที่ยอมรับเช่น jquery (ในเวลานั้น) หมดกล่อง
Rajeev K Tomy

ขอบคุณสำหรับคำตอบ. คุณช่วยอธิบายหน่อยได้ไหม?

1
ดูเหมือนว่า ZF1 นั้นเร็วกว่า ZF2 ประมาณสองเท่า ตรวจสอบที่นี่: developerknowhow.com/zf1-vs-zf2ปัญหาคือ ZF1 ไม่ได้รับการสนับสนุนอีกต่อไป (เท่าที่ฉันรู้) ในปีนี้ ฉันจะไปกับ ZF2 เป็นการส่วนตัว ฉันแน่ใจว่าพวกเขาจะเพิ่มประสิทธิภาพได้ในไม่ช้า
Razvan

ฉันไม่แน่ใจว่า Magento เลือก Zend Framework เนื่องจากความเร็วในการทำงานหรือไม่ มันไม่ได้เป็นที่รู้จักอย่างรวดเร็ว

ฉันทำการวิจัยและพบว่า ZF1 เวอร์ชันล่าสุดเปิดตัวเมื่อ 8 วันที่แล้ว framework.zend.com/downloads/archivesดูเหมือนว่าจะยังได้รับการสนับสนุนเป็นอย่างมาก

1

Magento 2 ใช้ Zend Framework 1 เช่นเดียวกับ Zend Framework 2 เช่นกัน โปรดอ้างอิงคำตอบต่อไปนี้โดย Raphaelส่วนประกอบของ Zend ใน Magento 2

Zend Framework 1 จุดสิ้นสุดของชีวิตคือ28 กันยายน 2016 ดูแถลงการณ์อย่างเป็นทางการของZend Framework 1 ประกาศสิ้นสุดของชีวิต

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