Por que os desenvolvedores do Magento não estão usando o Zend Framework 2 para Magento 2?

21

O Magento continuará usando principalmente o Zend Framework original (versão 1) para Magento 2 (fonte: Magento 2 e Zend Framework 2 )

Vendo como o Magento 2 não será compatível com o Magento 1, por que eles não estão atualizando para o Zend Framework 2?

Espero uma resposta técnica e autorizada.

Comunidade
fonte
esta pergunta é 99% semelhante a magento.stackexchange.com/questions/33259/… . mas não é possível defini-lo como duplicado, pois o questionador anterior não aceitou a resposta @Marius. No entanto, estou ansioso para saber sua resposta. Vamos esperar por uma resposta oficial para esse "PORQUE" :-) #
305 Rajeev K Tomy
4
Somente um desenvolvedor principal pode responder a isso com precisão. Vamos convocar @AntonKril.
Marius
@ Marius: sim, esta pergunta é uma dúvida básica que virá à nossa mente sempre que começarmos a aprender magento 2 (especialmente quem conhece o magento 1. *). Isso não deve ser mantido em segredo. Em vez disso, deve ser divulgado. Esperemos que um funcionário dê uma resposta para esta pergunta #
305 Rajeev K Tomy

Respostas:

32

Apenas para repetir as partes importantes acima, os aplicativos Magento 2 devem usar as APIs oficiais do Magento 2, não o Zend diretamente. Portanto, os desenvolvedores não devem se preocupar com o que construímos.

Para mentes curiosas, o Magento 2 usa bits de diferentes estruturas. Usamos o acesso ao banco de dados a partir do Zend 1. Investigamos a mudança para o Doctrine, mas foi muito trabalho para a versão Magento 2.0.0. No entanto, podemos fazê-lo em 2.1, 2.2, 3.0 ou ... (ainda não há compromisso). Quando chegamos a isso, também podemos mudar de idéia quanto ao uso de ZF1, ZF2, Doctrine etc. com base nas novas informações disponíveis. O Magento 2 também pode ter um arquivo YML (o que significa que usamos parte do Symfony). Uma parte do instalador usou parte do ZF2 (devemos desenvolver um novo aplicativo no ZF1?), Mas isso pode mudar. Também vimos uma pequena parte do Angular que possivelmente parecia interessante para MV * em JavaScript.

Mas assim que você estiver olhando o que está sob a estrutura Magento, provavelmente estará fazendo a coisa errada. O código do seu aplicativo não deve se importar. Você deve usar as APIs "oficiais" fornecidas pela estrutura Magento, para que possamos alterar os internos sem afetar os sites ou extensões existentes do cliente. Por "oficial", documentaremos quais APIs são APIs "suportadas" (ainda não foram muito bem executadas) - para tornar as atualizações mais confiáveis, manteremos essas APIs o mais estável possível, mas faremos alterações no código subjacente base para melhorar o desempenho etc.

Nota: Eu não olho nessa área com muita frequência - as perguntas do Magento 2 são assistidas no rastreador de problemas do GitHub. Estamos tentando mantê-los todos lá no momento.

Alan Kent
fonte
1
É errado usar as classes Zend em nosso código? Notei que o Magento chama algumas funções estáticas do Zend nos arquivos de modelo, ou seja <?php echo \Zend_Json::encode($block->getCheckoutConfig()); ?>.
Zvonimir Burić
1
Sim, @ ZvonimirBurić, você deve usar \Magento\Framework\Json\DecoderInterface. Ou json_encode/ json_decodediretamente.
594 nevegrind
e os validadores? Parece que não há Magento equivalente a Zend_Validation
Antonio Pedicini
10

A pergunta foi feita muitas vezes. Tudo se resume ao retorno do investimento. É um grande esforço migrar, o valor não é tão alto e o Magento, porque inclui o ZF1 como uma biblioteca na distribuição, apenas assume a responsabilidade por essa biblioteca, incluindo patches para problemas etc.

Piotr Kaminski
fonte
2
Obrigado pela resposta Piotr. Você sabe se o Zend ainda é suportado pelo Zend? Encontrei uma FAQ (possivelmente desatualizada) (aqui: framework.zend.com/about/faq ) que afirma: "Atualmente, planejamos dar suporte total ao Zend Framework 1 até pelo menos o início de 2014, incluindo atualizações de manutenção e segurança".
3
@ Marius: o magento 2 vai governar pelas próximas 2,3 décadas (espero). Nesse caso, como Tom disse, se o suporte à ZF1 expirar, o que você pensaria do futuro do Magento 2. Manter uma base desatualizada é bom o suficiente? quem sabe !
Rajeev K Tomy
5
Com base no manuseio do PHP, acho que o Magento tem uma política de ser extremamente conservador com seus lançamentos. Eles exigem a versão estável mais antiga do PHP que ainda está recebendo atualizações de segurança. Eles exigiram 5,3 até o PHP finalmente anunciar o fim da vida útil. Se eu tivesse que adivinhar, acho que a abordagem deles para o ZF é a mesma: usar a versão mais antiga e mais estável que ainda tem suporte. A questão para mim, como comenta o programmer_rkt, é que o Magento mudará para o ZF2 quando o ZF 1 chegar ao fim da vida útil, mesmo em uma versão 2.x, ou eles manterão o ZF1 eles mesmos sem o Zend e a comunidade ZF1.
3
Essa é a resposta correta. :-)
benmarks
2
Não sei se vamos reconsiderar, não sei se não vamos. Se o efeito de não estar no ZF2 fosse forte, isso poderia influenciar as coisas, mas duvido que seja esse o caso. Lembre-se de que eu não faço parte da equipe de produtos , portanto essa é apenas a minha opinião.
benmarks 26/09/14
2

Pela mesma razão, eles usaram o Prototype.js em vez do jQuery para Magento 1.

Parece que o ZF1 é duas vezes mais rápido que o ZF2. Verifique aqui

A questão é que o ZF1 não é mais suportado (até onde eu sei) a partir deste ano. Eu pessoalmente iria com ZF2. Tenho certeza de que eles o otimizarão em breve.

Razvan
fonte
1
Eu li que jquery era um bebê quando o magento 1 foi lançado e prototype.js era a ferramenta javascript bem estabelecida por aí. Para um peixe grande como o magento, contar com uma ferramenta não estabelecida como o jquery (na época) está fora da caixa
Rajeev K Tomy 25/14
Obrigado pela resposta. Você pode elaborar um pouco?
1
Bem, parece que o ZF1 é duas vezes mais rápido que o ZF2. Verifique aqui: developerknowhow.com/zf1-vs-zf2 O problema é que o ZF1 não é mais suportado (tanto quanto eu sei) a partir deste ano. Eu pessoalmente iria com ZF2. Tenho certeza de que eles o otimizarão em breve.
Razvan
Não tenho certeza se o Magento escolheu o Zend Framework devido à sua velocidade de execução. Não é exatamente conhecido por ser rápido.
Eu fiz algumas pesquisas e descobri que a versão mais recente do ZF1 foi lançada há 8 dias. framework.zend.com/downloads/archives Parece que ainda é muito suportado.