Чому розробники 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. Однак я нетерплячий знати її відповідь. Будемо чекати офіційної відповіді на це питання "ЧОМУ" :-)
Радєєв К Томі,

4
Тільки основний розробник може відповісти на це точно. Викличемо @AntonKril.
Маріус

@Marius: так, це питання є основним сумнівом, яке нам прийде в голову щоразу, коли ми почнемо вивчати magento 2 (особливо хто знайомий з magento 1. *). Це не слід зберігати в таємниці. Швидше слід розкривати. Будемо сподіватися, що чиновник дасть відповідь на це запитання
Rajeev K Tomy,

Відповіді:


32

Щоб повторити важливі частини, описані вище, програми Magento 2 повинні використовувати офіційні API Magento 2, а не Zend безпосередньо. Таким чином, розробники не повинні дбати, на чому ми будуємо.

Для розслідування умів Magento 2 використовує біти з різних рамок. Ми використовуємо доступ до бази даних із Zend 1. Ми досліджували перехід до Doctrine, але це було занадто багато роботи для випуску Magento 2.0.0. Однак ми можемо зробити це в 2.1, 2.2, 3.0 або ... (ще немає зобов'язань). Коли ми дійдемо до цього, ми можемо також передумати, чи використовувати ZF1, ZF2, Doctrine тощо на основі нової наявної інформації. У Magento 2 також може бути файл YML (тобто ми використовуємо частину Symfony). Частина інсталятора використовувала частину ZF2 (чи варто розробити нову програму на ZF1?), Але це може змінитися. Ми також побачили крихітну частину кутових, яка, можливо, виглядала цікавою для MV * у JavaScript.

Але як тільки ви дивитесь, що знаходиться в рамках Magento, ви, ймовірно, робите неправильну справу. Ваш код заявки не повинен перейматися. Вам слід використовувати "офіційні" API, надані рамкою Magento, щоб ми могли змінити внутрішні ресурси, не впливаючи на існуючі сайти або розширення клієнтів. "Офіційно" ми збираємось задокументувати, які API підтримуються "API" (ще не зроблено дуже добре) - щоб зробити оновлення надійнішими, ми будемо тримати ці API максимально стабільними, але внесемо зміни в базовий код база для підвищення продуктивності тощо.

Примітка. Я не дуже часто шукаю цю сферу - питання Magento 2 переглядаються на трекері випусків GitHub. Ми намагаємось утримати їх усіх на даний момент.


1
То чи неправильно використовувати класи Zend у нашому коді? Я помітив, що Magento викликає деякі статичні функції Zend у файлах шаблонів, тобто <?php echo \Zend_Json::encode($block->getCheckoutConfig()); ?>.
Звонімір Бурич

1
Так, @ ZvonimirBurić, ви повинні використовувати це \Magento\Framework\Json\DecoderInterfaceзамість. Або json_encode/ json_decodeбезпосередньо.
nevvermind

як щодо валідаторів? Здається, немає Magento еквівалента Zend_Validation
Антоніо Педікіні

10

Питання задавали багато разів. Це все зводиться до повернення інвестицій. Міграція докладає величезних зусиль, цінність не настільки висока, і Magento, оскільки включення ZF1 як бібліотеки у розповсюдження, просто бере на себе відповідальність за цю бібліотеку, включаючи виправлення за проблеми тощо.


2
Дякую за відповідь Пьотр. Чи знаєте ви, що ZF1 все ще підтримується Zend? Я знайшов (можливо, застарілий) FAQ (тут: Framework.zend.com/about/faq ), в якому йдеться: "Наразі ми плануємо повністю підтримувати Zend Framework 1 принаймні до початку 2014 року, включаючи оновлення та оновлення безпеки".

3
@Marius: magento 2 буде правити наступні 2,3 десятиліття (сподіваємось). У такому випадку, як сказав Том, якщо термін підтримки ZF1 закінчиться, то що ви думаєте про майбутнє Magento 2. Збереження застарілої основи досить добре? хто знає !
Радєєв К Томі

5
Виходячи з роботи з PHP, я здогадуюсь, що Magento проводить політику бути надзвичайно консервативним у своїх випусках. Вони вимагають найстарішого стабільного випуску PHP, який все ще отримує оновлення безпеки. Їм потрібно 5,3, поки PHP нарешті не оголосив про закінчення терміну служби. Якби мені довелося здогадатися, я можу подумати, що їхній підхід до ZF однаковий: використовувати найстарішу і найстабільнішу версію, яка все ще має підтримку. Питання до мене, як коментує programmer_rkt, полягає в тому, чи перейде Magento на ZF2, коли ZF 1 досягне кінця життя навіть у випуску 2.x, чи вони будуть підтримувати ZF1 самі без Zend та спільноти ZF1.

3
Це правильна відповідь. :-)
орієнтири

2
Я не знаю, що ми переглянемо, не знаю, що не будемо. Якби ефект відсутності на ZF2 був сильним, це може впливати на речі, але я сумніваюся, що так буде. Майте на увазі, що я не є членом команди продуктів , тому це лише моя думка.
орієнтири

2

З тієї ж причини вони використовували Prototype.js замість jQuery для Magento 1.

Здається, ZF1 приблизно вдвічі швидший, ніж ZF2. Перевірте тут

Проблема в тому, що станом на цей рік ZF1 більше не підтримується (наскільки я знаю). Я особисто пішов би з ZF2. Я впевнений, що незабаром вони оптимізують це.


1
Я читав, що jquery був немовлям, коли вийшов magento 1, а prototype.js - це добре створений інструмент javascript. Для такої великої риби, як магенто, покладатися на невідомий інструмент, такий як jquery (на той час), поза межами
Rajeev K Tomy,

Дякую за відповідь. Чи можете ви, будь ласка, трохи докладно?

1
Що ж, здається, ZF1 приблизно вдвічі швидший, ніж ZF2. Перевірте тут: developerknowhow.com/zf1-vs-zf2 Проблема полягає в тому, що ZF1 вже не підтримується (наскільки я знаю) станом на цей рік. Я особисто пішов би з ZF2. Я впевнений, що незабаром вони оптимізують це.
Разван

Я не впевнений, чи вибрав Magento Zend Framework через швидкість його виконання. Це не точно відомо, що швидко.

Я провів кілька досліджень і виявив, що остання версія ZF1 була випущена 8 днів тому. Framework.zend.com/downloads/archives Схоже, це все ще дуже підтримується.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.