Pourquoi les développeurs de Magento n'utilisent-ils pas Zend Framework 2 pour Magento 2?

21

Magento continuera d'utiliser principalement le Zend Framework original (version 1) pour Magento 2 (source: Magento 2 et Zend Framework 2 )

Étant donné que Magento 2 ne sera de toute façon pas rétrocompatible avec Magento 1, pourquoi ne sont-ils pas mis à niveau vers Zend Framework 2?

J'espère une réponse technique faisant autorité.

Communauté
la source
cette question est similaire à 99% à magento.stackexchange.com/questions/33259/… . mais je ne peux pas le définir comme doublon car le précédent intervenant n'a pas accepté la réponse @Marius. Cependant, j'ai hâte de connaître sa réponse. Attendons une réponse officielle pour ce "POURQUOI" :-)
Rajeev K Tomy
4
Seul un développeur principal peut y répondre avec précision. Invoquons @AntonKril.
Marius
@Marius: oui, cette question est un doute de base qui nous viendra à l'esprit chaque fois que nous commencerons à apprendre magento 2 (en particulier ceux qui se sont familiarisés avec magento 1. *). Cela ne doit pas être gardé secret. Plutôt devrait être divulgué. Espérons qu'un officiel donnera une réponse à cette question
Rajeev K Tomy

Réponses:

32

Juste pour répéter les parties importantes ci-dessus, les applications Magento 2 devraient utiliser les API Magento 2 officielles, pas directement Zend. Les développeurs ne devraient donc pas se soucier de ce sur quoi nous nous appuyons.

Pour les esprits curieux, Magento 2 utilise des bits de différents cadres. Nous utilisons l'accès à la base de données depuis Zend 1. Nous avons étudié le passage à Doctrine, mais cela représentait trop de travail pour la version Magento 2.0.0. Nous pouvons cependant le faire en 2.1, 2.2, 3.0 ou ... (pas encore d'engagement). Lorsque nous y arriverons, nous pouvons également changer d'avis quant à l'utilisation de ZF1, ZF2, Doctrine, etc. en fonction des nouvelles informations disponibles. Magento 2 peut également contenir un fichier YML (ce qui signifie que nous utilisons une partie de Symfony). Une partie du programme d'installation a utilisé une partie de ZF2 (devrions-nous développer une nouvelle application sur ZF1?), Mais cela peut changer. Nous avons également vu une petite partie d'Angular qui semblait peut-être intéressante pour MV * en JavaScript.

Mais dès que vous regardez ce qui est sous le framework Magento, vous faites probablement la mauvaise chose. Votre code d'application ne devrait pas s'en soucier. Vous devez utiliser les API "officielles" fournies par le framework Magento afin que nous puissions changer les internes sans affecter les sites ou extensions clients existants. Par "officiel", nous allons documenter quelles API sont "prises en charge" (pas encore très bien) - pour rendre les mises à niveau plus fiables, nous allons garder ces API aussi stables que possible, mais apporter des modifications au code sous-jacent base pour améliorer les performances, etc.

Remarque: Je ne regarde pas souvent dans ce domaine - les questions sur Magento 2 sont surveillées sur le tracker de problèmes GitHub. Nous essayons de les garder tous là pour le moment.

Alan Kent
la source
1
Est-il alors erroné d'utiliser des classes Zend dans notre code? J'ai remarqué que Magento appelle certaines fonctions statiques de Zend dans les fichiers de modèle, c'est-à-dire <?php echo \Zend_Json::encode($block->getCheckoutConfig()); ?>.
Zvonimir Burić,
1
Oui, @ ZvonimirBurić, vous devez utiliser à la \Magento\Framework\Json\DecoderInterfaceplace. Ou json_encode/ json_decodedirectement.
Nevvermind
qu'en est-il des validateurs? semble qu'il n'y a pas d'équivalent Magento de Zend_Validation
Antonio Pedicini
10

La question a été posée plusieurs fois. Tout se résume au retour sur investissement. C'est un effort énorme pour migrer, la valeur n'est pas si élevée et Magento, car il inclut ZF1 comme bibliothèque dans la distribution, prend juste la responsabilité de cette bibliothèque, y compris les correctifs pour les problèmes, etc.

Piotr Kaminski
la source
2
Merci pour la réponse Piotr. Savez-vous si ZF1 est toujours supporté par Zend? J'ai trouvé une FAQ (peut-être obsolète) (ici: framework.zend.com/about/faq ) qui stipule: "Nous prévoyons actuellement de prendre entièrement en charge Zend Framework 1 jusqu'au moins début 2014, y compris les mises à jour de maintenance et de sécurité."
3
@Marius: magento 2 va régner pour les 2,3 prochaines décennies (espérons-le). Dans ce cas, comme l'a dit Tom, si le support de ZF1 est expiré, que penseriez-vous de l'avenir de Magento 2. Garder une base obsolète est-il suffisant? qui sait !
Rajeev K Tomy
5
Sur la base de leur gestion de PHP, je suppose que Magento a une politique extrêmement conservatrice avec leurs versions. Ils nécessitent la version stable la plus ancienne de PHP qui reçoit toujours des mises à jour de sécurité. Ils ont requis 5.3 jusqu'à ce que PHP annonce enfin la fin de sa vie. Si je devais deviner, je pourrais penser que leur approche de ZF est la même: utiliser la version la plus ancienne et la plus stable qui a encore du support. Comme le commente programmer_rkt, la question est la suivante: Magento passera-t-il à ZF2 lorsque ZF 1 arrivera en fin de vie même dans une version 2.x ou maintiendra-t-il ZF1 lui-même sans Zend et la communauté ZF1.
3
Ceci est la bonne réponse. :-)
benmarks
2
Je ne sais pas si nous reconsidérerons, je ne sais pas si nous ne le ferons pas. Si l'effet de ne pas être sur ZF2 était fort, cela pourrait influencer les choses, mais je doute que ce sera le cas. Gardez à l'esprit que je ne fais pas partie de l'équipe produit , ce n'est donc que mon avis.
benmarks
2

Pour la même raison, ils ont utilisé Prototype.js à la place de jQuery pour Magento 1.

Il semble que ZF1 soit environ deux fois plus rapide que ZF2. Vérifiez ici

Le problème est que ZF1 n'est plus pris en charge (pour autant que je sache) à partir de cette année. Personnellement, j'irais avec ZF2. Je suis sûr qu'ils l'optimiseront bientôt.

Razvan
la source
1
J'ai lu que jquery était un bébé lorsque magento 1 est sorti et prototype.js était l'outil javascript bien établi. Pour un gros poisson comme magento, s'appuyer sur un outil non établi comme jquery (à cette époque) est hors de boîte
Rajeev K Tomy
Merci d'avoir répondu. Pouvez-vous développer un peu?
1
Eh bien, il semble que ZF1 soit environ deux fois plus rapide que ZF2. Vérifiez ici: developerknowhow.com/zf1-vs-zf2 Le problème est que ZF1 n'est plus pris en charge (pour autant que je sache) à partir de cette année. Personnellement, j'irais avec ZF2. Je suis sûr qu'ils l'optimiseront bientôt.
Razvan
Je ne sais pas si Magento a choisi Zend Framework en raison de sa vitesse d'exécution. Ce n'est pas exactement connu pour être rapide.
J'ai fait quelques recherches et j'ai découvert que la dernière version de ZF1 était sortie il y a 8 jours. framework.zend.com/downloads/archives Il semble qu'il soit toujours très pris en charge.
1

Magento 2 utilise également Zend Framework 1 ainsi que Zend Framework 2. Veuillez vous référer à la réponse suivante des composants de Raphael Zend dans Magento 2

La fin de vie de Zend Framework 1 est le 28 septembre 2016 . Voir le communiqué officiel Communiqué de fin de vie de Zend Framework 1

Mukesh
la source