Php 对Zend框架的承诺-有反对的理由吗?

Php 对Zend框架的承诺-有反对的理由吗?,php,zend-framework,Php,Zend Framework,我正在翻新一个大型CMS,我已经工作了很多年了。该产品本身很好,但一些组件,例如数据库和翻译类,需要紧急更换-早在2002年就部分自制,随着时间的推移变得有点混乱,可能在安全审计中难以生存 因此,我一直在仔细研究一些框架(或者更确切地说,组件库,因为我不打算改变CMS的基本结构),最终我最喜欢Zend框架。他们提供了一个可靠的MVC模型,但并不强迫您使用它,他们提供了许多专业组件,这些组件显然受到了很多关注(您知道俄语中有多个复数,并且您不能使用简单的($number==0)或($number>

我正在翻新一个大型CMS,我已经工作了很多年了。该产品本身很好,但一些组件,例如数据库和翻译类,需要紧急更换-早在2002年就部分自制,随着时间的推移变得有点混乱,可能在安全审计中难以生存

因此,我一直在仔细研究一些框架(或者更确切地说,组件库,因为我不打算改变CMS的基本结构),最终我最喜欢Zend框架。他们提供了一个可靠的MVC模型,但并不强迫您使用它,他们提供了许多专业组件,这些组件显然受到了很多关注(您知道俄语中有多个复数,并且您不能使用简单的
($number==0)或($number>1)来翻译它们吗
switch?我没有,但Zend_Translate可以处理它。只是为了说明构建库时所使用的通透程度。)

我现在已经到了无法回头的地步,开始用Zend制造的组件替换系统的关键组件。我并没有真正的三思而后行——我当然也不想挑起一场火焰战——但在继续之前,我想退一步,看看是否有人反对将一个大系统与Zend框架紧密联系在一起

我喜欢Zend的地方:

  • 据我所知,非常高质量的代码
  • 非常好的文档记录,至少是关于如何工作的介绍(还没有使用详细的API文档)
  • 由一家对该框架的繁荣感兴趣的公司提供支持
  • 在社会上深受好评,拥有相当的用户基础
  • 采用我喜欢的编码标准
  • 附带一整套单元测试
  • 在现代专业PHP开发方面,我觉得这是一个正确的选择,或者至少是一个正确的选择
我一直在考虑将ZF的功能封装并抽象到自己的类中,以便能够更轻松地切换框架,但得出的结论是,这不是一个好主意,因为:

  • 这将是一个不必要的抽象层次
  • 这可能会影响性能
  • 使用框架的最大优势——存在熟悉其组件的开发人员基础——将在一定程度上被抵消
因此,对采埃孚的承诺将是深刻的。因此,我的问题是:

有什么实质性的东西反对承诺使用Zend框架吗?

您是否知道Zend Inc.计划在2011年变坏,并使其成为一个封闭源代码库?Zend Inc.是由想要接管地球的邪恶吸血鬼经营的吸血鬼经营的吗?(在评论中确定Zend实际上是由吸血鬼运行的。)当您将所有项目转换到它时,您是否开始注意到代码库中存在概念上的缺陷?质量代码的出现是一种错觉吗?代码看起来不错,但在我的四核工作站下面的任何东西上运行速度都非常慢吗

接受答案

非常感谢大家的详细反馈。我希望我能设立一个赏金,并平均分配给所有的回答者

在许多对采埃孚有利的意见中,有一种是有充分根据的反对意见。我非常认真地对待这一点,并仔细研究了其他选择,主要是Yii和Kohana。通过这种比较以及阅读更多关于ZF和竞争产品的观点,我可以看出,与更简约的框架相比,Zend在某些领域可能被视为臃肿。(我也可以看出,这种“膨胀”大多有充分的理由提供最大的灵活性。但问题是,你是想要最大的灵活性并处理随之而来的复杂性,还是需要一种有明确指导方针的更简单的方法,才是正确的。)

无论如何,我将为手头的项目选择Zend,因为我对框架的主要用途是作为组件库。我不想采用Zend的MVC模型,我只需要用于国际化、会话处理等的高质量组件。因为我正在构建一个可再发行的产品,Zend的灵活性(例如,支持五种不同的字典格式)对我来说是受欢迎的。而且,ZF似乎是唯一一个允许我想要的自由度的框架(没有强制使用模式、文件结构…),就我所见,没有其他框架提供这种自由度

在未来的项目中,我希望利用实际的MVC特性,并完全服从框架在应用程序构建、命名、样式和过程方面的约定,不过,我可能不一定选择Zend,而是选择更简单的框架,如Yii或Kohana


我没有任何反对采埃孚的大理由——相反;当然,我还没有使用所有的组件(不确定是否有人使用过),但我从来没有看到过任何在查看源代码时看起来“糟糕”的组件

当开始一个新项目时,我通常会选择Zend框架,实际上,如果我是必须选择的人


我想在您的列表中添加至少一个参数:

  • Zend Framework可以与其他组件集成:您提到在应用程序中使用ZF组件,但没有提到相反的内容。
    • 一个很好的例子是Doctrine(Symfony的默认ORM),它可以很容易地与ZF一起使用——在我看来,它比Zend_Db好得多
除此之外,我必须说,我同意你的每一点


关于将ZF类封装到您自己的类中:是的,您可以这样做(我有时会这样做),但我不建议所有事情都这样做:在大多数情况下,这可能不是必需的

<