Magento开发人员为什么不使用Zend Framework 2 for Magento 2?


21

Magento将继续主要将原始的Zend Framework(版本1)用于Magento 2(来源:Magento 2和Zend Framework 2

鉴于Magento 2无论如何都不会与Magento 1向后兼容,为什么它们不升级到Zend Framework 2?

我希望获得权威的技术答案。


这个问题与magento.stackexchange.com/questions/33259/…相似。但由于先前的提问者未接受@Marius答案,因此无法将其设置为重复。但是,我很想知道它的答案。让我们等待那个“为什么”的官方答复:-)
拉杰夫·K·托米2014年

4
只有核心开发人员才能准确回答。让我们召唤@AntonKril。
马里乌斯

@Marius:是的,这个问题是我们开始学习magento 2(特别是熟悉magento 1. *的人)时就会想到的基本疑问。这不应保密。而是应该公开。让我们希望有一个官员回答这个问题
Rajeev K Tomy 2014年

Answers:


32

仅重复上述重要部分,Magento 2应用程序应使用官方的Magento 2 API,而不是直接使用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的一小部分,对于JavaScript中的MV *来说可能看起来很有趣。

但是,一旦您查看了Magento框架下的内容,您可能就在做错事。您的应用程序代码不应该在乎。您应该使用Magento框架提供的“官方” API,以便我们可以更改内部结构而不会影响现有的客户站点或扩展。通过“官方”,我们将记录哪些“受支持的” API(尚未做得很好)-为了使升级更可靠,我们将使这些API尽可能保持稳定,但对底层代码进行更改改善性能等的基础

注意:我并不经常在这方面看-在GitHub问题跟踪器上可以看到Magento 2问题。目前,我们正在努力使它们保持在那里。


1
那么在我们的代码中使用Zend类是否错误?我注意到Magento在模板文件中调用了某些Zend静态函数<?php echo \Zend_Json::encode($block->getCheckoutConfig()); ?>
ZvonimirBurić15年

1
是的,@ZvonimirBurić,您应该\Magento\Framework\Json\DecoderInterface改用。或json_encode/ json_decode直接。
nevvermind '16

验证者呢?似乎没有相当于Zend_Validation的Magento
Antonio Pedicini

10

这个问题被问了很多遍。一切归结为投资回报。迁移需要付出巨大的努力,其价值并不高,而且Magento并不高,因为它包含ZF1作为发行版中的库,仅负责此库,包括问题补丁等。


2
感谢您的回答。您知道Zend是否仍支持ZF1吗?我发现了一个(可能已经过时的)常见问题解答(在这里:framework.zend.com/about/faq),其中指出:“我们目前计划至少在2014年初之前全面支持Zend Framework 1,包括维护和安全更新。”

3
@Marius:magento 2将在接下来的2.3年内统治(希望如此)。如汤姆所说,在那种情况下,如果ZF1的支持期满,那么您对Magento 2的未来会如何看待?保持过时的基础就足够了吗?谁知道 !
拉杰夫K Tomy 2014年

5
根据他们对PHP的处理,我猜想Magento的发布版本会非常保守。他们需要仍在更新安全性的最旧的稳定PHP版本。他们要求5.3,直到PHP最终宣布使用寿命终止。如果我不得不猜测,我可能会认为他们使用ZF的方法是相同的:使用仍受支持的最旧,最稳定的版本。正如developer_rkt所评论的,对我来说,问题是,即使ZF 1在2.x版本中达到使用寿命,Magento仍将切换到ZF2,或者他们将自己维护ZF1,而无需Zend和ZF1社区。

3
这是正确的答案。:-)
benmarks 2014年

2
我不知道我们会重新考虑,我不知道我们不会。如果不在ZF2上的影响很强,可能会影响事物,但我怀疑情况会如此。请记住,我不属于产品团队,所以这只是我的意见。
benmarks 2014年

2

出于相同的原因,他们在Magento 1中使用Prototype.js而不是jQuery。

看来ZF1比ZF2快大约两倍。在这里检查

问题是,据我所知,今年不再支持ZF1。我个人会选择ZF2。我相信他们会尽快对其进行优化。


1
我已经读到,当magento 1发布时jquery还是一个婴儿,而prototype.js是在那里建立良好的javascript工具。对于像magento这样的大鱼,依靠诸如jquery之类的未建立工具(当时)是开箱即用的
Rajeev K Tomy 2014年

感谢您的回答。您能详细说明一下吗?

1
好吧,似乎ZF1比ZF2快大约两倍。在这里检查:developerknowhow.com/zf1-vs-zf2问题是(据我所知)今年不再支持ZF1。我个人会选择ZF2。我相信他们会尽快对其进行优化。
拉兹万2014年

我不确定Magento是否由于执行速度而选择Zend Framework。它并不以快速而著称。

我进行了一些研究,发现ZF1的最新版本是8天前发布的。framework.zend.com/downloads/archives似乎仍然受到很大的支持。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.