Dlaczego programiści Magento nie używają Zend Framework 2 dla Magento 2?

21

Magento będzie nadal głównie używać oryginalnej Zend Framework (wersja 1) dla Magento 2 (źródło: Magento 2 i Zend Framework 2 )

Widząc, że Magento 2 i tak nie będzie kompatybilny wstecz z Magento 1, dlaczego nie aktualizują się do Zend Framework 2?

Mam nadzieję na autorytatywną, techniczną odpowiedź.

Społeczność
źródło
to pytanie jest w 99% podobne do magento.stackexchange.com/questions/33259/… . ale nie mogę ustawić go jako duplikatu, ponieważ poprzedni pytający nie przyjął odpowiedzi @Marius. Jednak chętnie znam odpowiedź. Poczekajmy na oficjalną odpowiedź na to „DLACZEGO” :-)
Rajeev K Tomy
4
Tylko główny programista może odpowiedzieć na to pytanie dokładnie. Wezwijmy @AntonKril.
Marius
@Marius: tak, to pytanie jest podstawową wątpliwością, która przyjdzie nam do głowy, ilekroć zaczniemy uczyć się magento 2 (szczególnie kto zna magento 1. *). Nie należy tego utrzymywać w tajemnicy. Raczej powinien zostać ujawniony. Miejmy nadzieję, że urzędnik udzieli odpowiedzi na to pytanie
Rajeev K Tomy

Odpowiedzi:

32

Aby powtórzyć ważne części powyżej, aplikacje Magento 2 powinny używać oficjalnych interfejsów API Magento 2, a nie bezpośrednio Zend. Dlatego programiści nie powinni dbać o to, na czym budujemy.

Dla dociekliwych umysłów Magento 2 używa bitów z różnych ram. Korzystamy z dostępu do bazy danych poza Zend 1. Badaliśmy przejście do Doctrine, ale było to zbyt wiele pracy dla wydania Magento 2.0.0. Możemy to jednak zrobić w 2.1, 2.2, 3.0 lub ... (jeszcze nie zobowiązujemy). Kiedy do tego dojdziemy, możemy również zmienić zdanie, czy korzystać z ZF1, ZF2, Doctrine itp. W oparciu o nowe dostępne informacje. Magento 2 może również zawierać plik YML (co oznacza, że ​​używamy części Symfony). Część instalatora używała części ZF2 (czy powinniśmy opracować nową aplikację na ZF1?), Ale to może się zmienić. Widzieliśmy także niewielką część Angulara, która prawdopodobnie wyglądała interesująco dla MV * w JavaScript.

Ale gdy tylko spojrzysz na to, co jest objęte Magento, prawdopodobnie robisz coś złego. Twój kod aplikacji nie powinien się tym przejmować. Powinieneś używać „oficjalnych” interfejsów API dostarczanych przez platformę Magento, abyśmy mogli zmieniać elementy wewnętrzne bez wpływu na istniejące witryny klientów lub rozszerzenia. Poprzez „oficjalny” zamierzamy udokumentować, które interfejsy API są „obsługiwanymi” interfejsami API (jeszcze niezbyt dobrze zrobionymi) - aby uczynić aktualizacje bardziej niezawodnymi, będziemy utrzymywać te interfejsy API tak stabilnie, jak to możliwe, ale wprowadzimy zmiany w podstawowym kodzie baza do poprawy wydajności itp.

Uwaga: nie szukam w tym obszarze zbyt często - pytania związane z Magento 2 są obserwowane na narzędziu do śledzenia problemów GitHub. Obecnie staramy się je wszystkie trzymać.

Alan Kent
źródło
1
Czy zatem niewłaściwe jest używanie klas Zend w naszym kodzie? Zauważyłem, że Magento wywołuje niektóre funkcje statyczne Zend w plikach szablonów, tj <?php echo \Zend_Json::encode($block->getCheckoutConfig()); ?>.
Zvonimir Burić
1
Tak, @ ZvonimirBurić, powinieneś użyć \Magento\Framework\Json\DecoderInterfacezamiast tego. Lub json_encode/ json_decodebezpośrednio.
nevvermind
co z walidatorami? wydaje się, że nie ma odpowiednika Zend_Validation dla Magento
Antonio Pedicini,
10

Pytanie zadawano wiele razy. Wszystko sprowadza się do zwrotu z inwestycji. Migracja jest ogromnym wysiłkiem, wartość nie jest aż tak wysoka i Magento, ponieważ zawiera ZF1 jako bibliotekę w dystrybucji, po prostu bierze odpowiedzialność za tę bibliotekę, w tym za poprawki problemów itp.

Piotr Kamiński
źródło
2
Dzięki za odpowiedź Piotr. Czy wiesz, czy ZF1 jest nadal obsługiwany przez Zend? Znalazłem (prawdopodobnie nieaktualne) FAQ (tutaj: framework.zend.com/about/faq ), które stwierdza: „Obecnie planujemy w pełni wspierać Zend Framework 1 przynajmniej do początku 2014 r., W tym aktualizacje konserwacji i bezpieczeństwa”.
3
@Marius: magento 2 będzie rządził przez następne 2,3 dekady (miejmy nadzieję). W takim przypadku, jak powiedział Tom, jeśli wsparcie ZF1 wygasło, co byś pomyślał o przyszłości Magento 2. Utrzymanie przestarzałej bazy jest wystarczające? kto wie !
Rajeev K Tomy
5
Biorąc pod uwagę ich obsługę PHP, domyślam się, że Magento ma bardzo konserwatywne podejście do swoich wydań. Wymagają najstarszej stabilnej wersji PHP, która wciąż otrzymuje aktualizacje zabezpieczeń. Wymagały one 5.3, aż PHP w końcu ogłosiło koniec życia. Gdybym musiał zgadywać, mógłbym pomyśleć, że ich podejście do ZF jest takie samo: użyć najstarszej i najbardziej stabilnej wersji, która wciąż ma wsparcie. Pytanie do mnie, jak komentuje programmer_rkt, brzmi: czy Magento przełączy się na ZF2, kiedy ZF 1 osiągnie koniec życia nawet w wersji 2.x, czy też utrzymają ZF1 bez Zend i społeczności ZF1.
3
To jest poprawna odpowiedź. :-)
benmarks
2
Nie wiem, czy zastanowimy się ponownie, nie wiem, że nie będziemy. Gdyby efekt braku bycia na ZF2 był silny, mogłoby to wpłynąć na różne rzeczy, ale wątpię, by tak było. Pamiętaj, że nie należę do zespołu produktu , więc to tylko moja opinia.
benmarks
2

Z tego samego powodu użyli Prototype.js zamiast jQuery dla Magento 1.

Wygląda na to, że ZF1 jest około dwa razy szybszy niż ZF2. Sprawdź tutaj

Problem polega na tym, że ZF1 nie jest już obsługiwany (o ile wiem) od tego roku. Osobiście wybrałbym ZF2. Jestem pewien, że wkrótce ją zoptymalizują.

Razvan
źródło
1
Czytałem, że jquery było dzieckiem, kiedy Magento 1 zostało wydane, a Prototype.js było dobrze znanym narzędziem javascript. W przypadku dużych ryb, takich jak Magento, poleganie na nie ustalonym narzędziu, takim jak jquery (w tym czasie), jest nieszablonowe
Rajeev K Tomy
Dziękuję za odpowiedź. Czy możesz trochę rozwinąć?
1
Wygląda na to, że ZF1 jest około dwa razy szybszy niż ZF2. Sprawdź tutaj: developerknowhow.com/zf1-vs-zf2 Problem polega na tym, że ZF1 nie jest już obsługiwany (o ile wiem) od tego roku. Osobiście wybrałbym ZF2. Jestem pewien, że wkrótce ją zoptymalizują.
Razvan
Nie jestem pewien, czy Magento wybrał Zend Framework ze względu na szybkość jego wykonywania. Nie jest dokładnie znany z tego, że jest szybki.
Przeprowadziłem badania i odkryłem, że najnowsza wersja ZF1 została wydana 8 dni temu. framework.zend.com/downloads/archives Wygląda na to, że nadal jest bardzo obsługiwany.