Warum verwenden Magento-Entwickler Zend Framework 2 für Magento 2 nicht?

21

Magento wird weiterhin hauptsächlich das ursprüngliche Zend Framework (Version 1) für Magento 2 verwenden (Quelle: Magento 2 und Zend Framework 2 ).

Da Magento 2 ohnehin nicht abwärtskompatibel mit Magento 1 ist, warum werden sie nicht auf Zend Framework 2 aktualisiert?

Ich hoffe auf eine verbindliche, technische Antwort.

Gemeinschaft
quelle
Diese Frage ähnelt zu 99% magento.stackexchange.com/questions/33259/… . Aber ich kann es nicht als Duplikat festlegen, da der vorherige Fragesteller die Antwort von @Marius nicht akzeptiert hat. Ich bin jedoch gespannt auf die Antwort. Warten wir auf eine offizielle Antwort auf das "WARUM" :-)
Rajeev K Tomy
4
Nur ein Core-Entwickler kann dies genau beantworten. Lassen Sie uns @AntonKril beschwören.
Marius
@Marius: Ja, diese Frage ist ein grundlegender Zweifel, der uns immer dann in den Sinn kommt, wenn wir anfangen, Magento 2 zu lernen (insbesondere, wenn wir mit Magento 1 vertraut sind. *). Dies sollte nicht geheim gehalten werden. Vielmehr sollte offen gelegt werden. Hoffen wir, dass ein Beamter eine Antwort auf diese Frage gibt
Rajeev K Tomy

Antworten:

32

Um die oben genannten wichtigen Teile zu wiederholen, sollten Magento 2-Anwendungen die offiziellen Magento 2-APIs verwenden, nicht Zend direkt. Entwickler sollten sich also nicht darum kümmern, worauf wir aufbauen.

Magento 2 verwendet für die Erkundigung von Köpfen Bits aus verschiedenen Frameworks. Wir verwenden den Datenbankzugriff aus Zend 1. Wir haben untersucht, wie wir zu Doctrine wechseln können, aber es war zu viel Arbeit für die Magento 2.0.0-Version. Wir können es jedoch in 2.1, 2.2, 3.0 oder ... tun (noch keine Verpflichtung). Wenn wir dazu kommen, können wir auch unsere Meinung ändern, ZF1, ZF2, Doctrine usw. zu verwenden, basierend auf neuen verfügbaren Informationen. Magento 2 enthält möglicherweise auch eine YML-Datei (dh wir verwenden einen Teil von Symfony). Ein Teil des Installationsprogramms verwendete ZF2 (sollten wir eine neue App für ZF1 entwickeln?), Aber dies kann sich ändern. Wir haben auch einen winzigen Teil von Angular gesehen, der möglicherweise für MV * in JavaScript interessant war.

Aber sobald Sie sich ansehen, was sich unter dem Magento-Framework befindet, tun Sie wahrscheinlich das Falsche. Ihr Anwendungscode sollte es nicht interessieren. Sie sollten die "offiziellen" APIs verwenden, die vom Magento-Framework bereitgestellt werden, damit wir die Interna ändern können, ohne bestehende Kundensites oder -erweiterungen zu beeinträchtigen. Mit "offiziell" werden wir dokumentieren, welche APIs "unterstützt" werden (noch nicht sehr gut gemacht). Um Upgrades zuverlässiger zu machen, werden wir diese APIs so stabil wie möglich halten, aber Änderungen am zugrunde liegenden Code vornehmen Basis zur Verbesserung der Leistung usw.

Hinweis: Ich schaue nicht oft in diesen Bereich - Magento 2-Fragen werden im GitHub-Issue-Tracker angezeigt. Wir versuchen, sie alle zur Zeit dort zu halten.

Alan Kent
quelle
1
Ist es dann falsch, Zend-Klassen in unserem Code zu verwenden? Mir ist aufgefallen, dass Magento einige statische Zend-Funktionen in den Vorlagendateien aufruft, z <?php echo \Zend_Json::encode($block->getCheckoutConfig()); ?>.
Zvonimir Burić
1
Ja, @ZvonimirBurić, du solltest \Magento\Framework\Json\DecoderInterfacestattdessen verwenden. Oder json_encode/ json_decodedirekt.
Nevvermind
Was ist mit Validatoren? Anscheinend gibt es kein Magento-Äquivalent zu Zend_Validation
Antonio Pedicini
10

Die Frage wurde oft gestellt. Auf die Amortisation kommt es an. Die Migration ist sehr aufwändig, der Wert ist nicht so hoch und Magento übernimmt nur die Verantwortung für diese Bibliothek, einschließlich Patches für Probleme usw., da es ZF1 als Bibliothek in die Distribution einbezieht.

Piotr Kaminski
quelle
2
Danke für die Antwort Piotr. Wissen Sie, ob ZF1 noch von Zend unterstützt wird? Ich habe eine (möglicherweise veraltete) FAQ (hier: framework.zend.com/about/faq ) gefunden, in der es heißt: "Wir planen derzeit, Zend Framework 1 bis mindestens Anfang 2014 vollständig zu unterstützen, einschließlich Wartungs- und Sicherheitsupdates."
3
@Marius: Magento 2 wird in den nächsten 2,3 Jahrzehnten regieren (hoffentlich). In diesem Fall, wie Tom sagte, wenn die Unterstützung für ZF1 abgelaufen ist, was würden Sie dann über die Zukunft von Magento 2 denken. Eine veraltete Basis beizubehalten ist gut genug? Wer weiß !
Rajeev K Tomy
5
Aufgrund ihres Umgangs mit PHP schätze ich, dass Magento bei seinen Veröffentlichungen äußerst konservativ vorgeht. Sie benötigen die älteste stabile Version von PHP, die noch Sicherheitsupdates erhält. Sie benötigten 5.3, bis PHP schließlich das Ende der Lebensdauer ankündigte. Wenn ich raten müsste, könnte ich denken, dass ihre Herangehensweise an ZF dieselbe ist: die älteste und stabilste Version zu verwenden, die immer noch Unterstützung bietet. Die Frage für mich ist, wie programmer_rkt kommentiert, ob Magento zu ZF2 wechselt, wenn ZF 1 auch in einer 2.x-Version das Lebensende erreicht, oder ob ZF1 selbst ohne Zend und die ZF1-Community gewartet wird.
3
Das ist die richtige Antwort. :-)
benmarks
2
Ich weiß nicht, dass wir es noch einmal überdenken werden, ich weiß nicht, dass wir es nicht werden. Wenn die Auswirkung, nicht auf ZF2 zu wirken, stark wäre, könnte dies die Dinge beeinflussen, aber ich bezweifle, dass dies der Fall sein wird. Denken Sie daran, dass ich nicht Teil des Produktteams bin. Dies ist nur meine Meinung.
Benmarks
2

Aus dem gleichen Grund verwendeten sie Prototype.js anstelle von jQuery für Magento 1.

Es scheint, dass ZF1 ungefähr zweimal schneller ist als ZF2. Überprüfe hier

Das Problem ist, dass ZF1 seit diesem Jahr (soweit ich weiß) nicht mehr unterstützt wird. Ich persönlich würde mit ZF2 gehen. Ich bin sicher, dass sie es bald optimieren werden.

Razvan
quelle
1
Ich habe gelesen, dass jquery ein Baby war, als Magento 1 veröffentlicht wurde und prototype.js das etablierte Javascript-Tool da draußen war. Für einen großen Fisch wie Magento ist das Verlassen auf ein nicht etabliertes Tool wie JQuery (zu dieser Zeit) out of box
Rajeev K Tomy
Danke für die Antwort. Können Sie bitte etwas näher darauf eingehen?
1
Nun, es scheint, dass ZF1 ungefähr zweimal schneller ist als ZF2. Überprüfen Sie hier: developerknowhow.com/zf1-vs-zf2 Das Problem ist, dass ZF1 seit diesem Jahr (soweit ich weiß) nicht mehr unterstützt wird. Ich persönlich würde mit ZF2 gehen. Ich bin sicher, dass sie es bald optimieren werden.
Razvan
Ich bin mir nicht sicher, ob Magento Zend Framework aufgrund seiner Ausführungsgeschwindigkeit ausgewählt hat. Es ist nicht gerade dafür bekannt, schnell zu sein.
Ich habe einige Nachforschungen angestellt und festgestellt, dass die neueste Version von ZF1 vor 8 Tagen veröffentlicht wurde. framework.zend.com/downloads/archives Es scheint, als ob es immer noch sehr gut unterstützt wird.
1

Magento 2 verwendet sowohl Zend Framework 1 als auch Zend Framework 2. Bitte beziehen Sie sich auf die folgende Antwort von Raphael Zend-Komponenten in Magento 2

Das Ende von Zend Framework 1 ist der 28. September 2016 . Siehe die offizielle Pressemitteilung von Zend Framework 1 zum Ende des Lebens

Mukesh
quelle