Mengapa pengembang Magento tidak menggunakan Zend Framework 2 untuk Magento 2?

21

Magento sebagian besar akan terus menggunakan Zend Framework asli (versi 1) untuk Magento 2 (sumber: Magento 2 dan Zend Framework 2 )

Melihat bagaimana Magento 2 tidak akan kompatibel dengan Magento 1, mengapa mereka tidak meningkatkan ke Zend Framework 2?

Saya berharap untuk jawaban otoritatif, teknis.

Komunitas
sumber
pertanyaan ini 99% mirip dengan magento.stackexchange.com/questions/33259/… . tetapi tidak dapat menetapkannya sebagai duplikat karena penanya sebelumnya tidak menerima jawaban @Marius. Namun saya ingin tahu jawabannya. Mari kita tunggu jawaban resmi untuk "MENGAPA" :-)
Rajeev K Tomy
4
Hanya pengembang inti yang dapat menjawab ini dengan akurat. Mari kita memanggil @AntonKril.
Marius
@Marius: ya pertanyaan ini adalah keraguan mendasar yang akan muncul di benak kita setiap kali kita mulai belajar magento 2 (terutama yang sudah terbiasa dengan magento 1. *). Ini seharusnya tidak dirahasiakan. Melainkan harus diungkapkan. Mari kita berharap seorang pejabat memberikan jawaban untuk pertanyaan ini
Rajeev K Tomy

Jawaban:

32

Hanya untuk mengulangi bagian-bagian penting di atas, aplikasi Magento 2 harus menggunakan API Magento 2 resmi, bukan Zend secara langsung. Dengan demikian, pengembang tidak boleh peduli pada apa yang kami bangun.

Untuk pikiran yang ingin tahu, Magento 2 menggunakan bit dari kerangka kerja yang berbeda. Kami menggunakan akses database dari Zend 1. Kami menyelidiki pindah ke Doctrine, tapi itu terlalu banyak bekerja untuk rilis Magento 2.0.0. Namun kami dapat melakukannya di 2.1, 2.2, 3.0, atau ... (belum ada komitmen). Ketika kita melakukannya, kita juga dapat berubah pikiran apakah akan menggunakan ZF1, ZF2, Doktrin dll berdasarkan informasi baru yang tersedia. Magento 2 mungkin juga memiliki file YML di dalamnya (artinya kita menggunakan bagian dari Symfony). Bagian dari penginstal menggunakan beberapa ZF2 (haruskah kita mengembangkan aplikasi baru di ZF1?), Tetapi ini dapat berubah. Kami juga melihat bagian kecil dari Angular yang mungkin terlihat menarik untuk MV * di JavaScript.

Tapi begitu Anda melihat apa yang ada di bawah kerangka Magento, Anda mungkin melakukan hal yang salah. Kode aplikasi Anda seharusnya tidak peduli. Anda harus menggunakan API "resmi" yang disediakan oleh kerangka kerja Magento sehingga kami dapat mengubah internal tanpa memengaruhi situs atau ekstensi pelanggan yang ada. Dengan "resmi", kami akan mendokumentasikan API mana yang "didukung" API (belum dilakukan dengan sangat baik) - untuk membuat pemutakhiran lebih dapat diandalkan, kami akan menjaga agar API ini seestabil mungkin, tetapi membuat perubahan pada kode yang mendasarinya dasar untuk meningkatkan kinerja dll.

Catatan: Saya jarang melihat di area ini - pertanyaan Magento 2 ditonton di pelacak isu GitHub. Kami mencoba untuk menyimpan semuanya di sana saat ini.

Alan Kent
sumber
1
Apakah salah menggunakan kelas Zend dalam kode kita? Saya perhatikan bahwa Magento memanggil beberapa fungsi statis Zend dalam file templat yaitu <?php echo \Zend_Json::encode($block->getCheckoutConfig()); ?>.
Zvonimir Burić
1
Ya, @ ZvonimirBurić, Anda harus menggunakannya \Magento\Framework\Json\DecoderInterface. Atau json_encode/ json_decodelangsung.
nevvermind
bagaimana dengan validator? sepertinya tidak ada Magento yang setara dengan
Zend_Validation
10

Pertanyaan itu berkali-kali ditanyakan. Semuanya bermuara pada pengembalian investasi. Ini merupakan upaya besar untuk bermigrasi, nilainya tidak terlalu tinggi dan Magento, karena termasuk ZF1 sebagai perpustakaan dalam distribusi, hanya bertanggung jawab atas perpustakaan ini, termasuk tambalan untuk masalah dll.

Piotr Kaminski
sumber
2
Terima kasih atas jawaban Piotr. Apakah Anda tahu jika ZF1 masih didukung oleh Zend? Saya menemukan FAQ (mungkin kedaluwarsa) (di sini: framework.zend.com/about/faq ) yang menyatakan: "Kami saat ini berencana untuk sepenuhnya mendukung Zend Framework 1 hingga setidaknya awal 2014, termasuk pemeliharaan dan pembaruan keamanan."
3
@Marius: Magento 2 akan memerintah selama 2,3 dekade ke depan (semoga). Dalam hal itu, seperti yang dikatakan Tom, jika dukungan ZF1 kedaluwarsa, lalu apa pendapat Anda tentang masa depan Magento 2. Menjaga basis yang ketinggalan zaman cukup baik? siapa tahu !
Rajeev K Tomy
5
Berdasarkan penanganan PHP mereka, saya menduga Magento memiliki kebijakan untuk bersikap sangat konservatif dengan rilis mereka. Mereka membutuhkan rilis stabil tertua dari PHP yang masih mendapatkan pembaruan keamanan. Mereka membutuhkan 5.3 hingga PHP akhirnya mengumumkan akhir masa pakainya. Jika saya harus menebak, saya mungkin berpikir bahwa pendekatan mereka terhadap ZF adalah sama: untuk menggunakan versi tertua dan paling stabil yang masih memiliki dukungan. Pertanyaan saya, seperti komentar programmer_rkt, apakah Magento akan beralih ke ZF2 ketika ZF 1 mencapai akhir masa pakainya bahkan dalam rilis 2.x atau apakah mereka akan mempertahankan ZF1 sendiri tanpa Zend dan komunitas ZF1.
3
Ini jawaban yang benar. :-)
benmarks
2
Saya tidak tahu bahwa kami akan mempertimbangkan kembali, saya tidak tahu bahwa kami tidak akan melakukannya. Jika efek tidak pada ZF2 kuat yang mungkin mempengaruhi hal-hal, tapi saya ragu itu akan terjadi. Ingatlah bahwa saya bukan bagian dari tim produk , jadi ini hanya pendapat saya.
manfaat
2

Untuk alasan yang sama mereka menggunakan Prototype.js sebagai gantinya jQuery untuk Magento 1.

Tampaknya ZF1 sekitar dua kali lebih cepat daripada ZF2. Lihat di sini

Masalahnya adalah bahwa ZF1 tidak didukung lagi (sejauh yang saya tahu) pada tahun ini. Saya pribadi akan pergi dengan ZF2. Saya yakin mereka akan mengoptimalkannya dalam waktu dekat.

Razvan
sumber
1
Saya telah membaca bahwa jquery adalah bayi ketika magento 1 dirilis dan prototipe.js adalah alat javascript yang mapan di luar sana. Untuk ikan besar seperti magento, mengandalkan alat yang tidak mapan seperti jquery (pada waktu itu) sudah di luar kotak
Rajeev K Tomy
Terima kasih atas jawabannya. Bisakah Anda menjelaskan sedikit?
1
Yah, sepertinya ZF1 sekitar dua kali lebih cepat daripada ZF2. Periksa di sini: developerknowhow.com/zf1-vs-zf2 Masalahnya adalah bahwa ZF1 tidak didukung lagi (sejauh yang saya tahu) pada tahun ini. Saya pribadi akan pergi dengan ZF2. Saya yakin mereka akan mengoptimalkannya dalam waktu dekat.
Razvan
Saya tidak yakin apakah Magento memilih Zend Framework karena kecepatan eksekusi. Itu tidak diketahui karena cepat.
Saya melakukan riset dan menemukan bahwa versi terbaru ZF1 dirilis 8 hari yang lalu. framework.zend.com/downloads/archives Sepertinya masih sangat didukung.