Почему разработчики 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. *). Это не должно храниться в секрете. Скорее должно быть раскрыто. Будем надеяться, что чиновник даст ответ на этот вопрос
Раджив К Томи

Ответы:

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?), Но это может измениться. Мы также увидели крошечную часть Angular, которая, возможно, выглядела интересной для 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. Для такой крупной рыбы, как magento, полагаться на неустановленный инструмент, такой как jquery (в то время), нереально
Rajeev K Tomy
Спасибо за ответ. Можете ли вы уточнить немного?
1
Ну, кажется, ZF1 примерно в два раза быстрее, чем ZF2. Проверьте здесь: developerknowhow.com/zf1-vs-zf2 Проблема в том, что ZF1 больше не поддерживается (насколько я знаю) с этого года. Я лично пошел бы с ZF2. Я уверен, что они скоро это оптимизируют.
Разван
Я не уверен, выбрал ли Magento Zend Framework из-за его скорости выполнения. Это не совсем известно, как быстро.
Я провел некоторое исследование и обнаружил, что последняя версия ZF1 была выпущена 8 дней назад. framework.zend.com/downloads/archives Кажется, что он все еще очень поддерживается.