代码之家  ›  专栏  ›  技术社区  ›  Pekka 웃

对Zend框架的承诺-是否有反对意见?[关闭]

  •  22
  • Pekka 웃  · 技术社区  · 7 年前

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

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

    我现在真的处在一个不归路的地步,开始用Zend制造的系统替换系统的关键部件。我真的不想再想了——当然我也不想挑起一场火焰大战——但是在继续之前,我想退一步看看是否有 任何东西 反对将一个大系统与Zend框架紧密相连。

    我喜欢Zend:

    • 据我所见,非常高质量的代码
    • 有非常好的文档记录,至少是关于如何工作的介绍(还没有使用详细的API文档)
    • 由一家有兴趣看到框架繁荣的公司提供支持
    • 在社区中受到好评,拥有相当多的用户群
    • 使用我喜欢的编码标准
    • 附带一整套单元测试
    • 在我看来,对于现代专业的PHP开发来说,这是一个正确的选择,或者至少是一个正确的选择。

    我一直在考虑将ZF的功能封装和抽象到自己的类中,以便更容易地切换框架,但得出的结论是,这不是一个好主意,因为:

    • 这将是一个不必要的抽象层次
    • 它可能会牺牲性能
    • 使用一个框架的巨大优势——存在一个熟悉其组件的开发人员基础——将被部分取消。

    因此,对ZF的承诺将是一个很深的承诺。因此我的问题是:

    有没有什么实质性的言论反对对Zend框架的承诺?

    你知道Zend公司2011年的计划吗?让它成为一个封闭源码的图书馆。是Zend公司 由吸血鬼经营 被想要占领地球的邪恶吸血鬼控制?(这是在评论中确定的,Zend实际上是由吸血鬼运行的。)当您将所有项目转换为Zend时,您开始注意到的代码库中是否存在概念上的缺陷?质量代码的出现是一种幻觉吗?代码看起来不错,但在我的四核工作站下面的任何地方运行都非常慢吗?

    接受答案

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

    在许多赞成ZF的意见中,有一个非常有根据的反对意见。我非常认真地考虑了这一点,并仔细研究了替代方案,主要是伊利和科哈纳。通过比较和阅读更多关于ZF和竞争产品的意见,我可以看到Zend在某些领域可以被看作是膨胀的,而不是更简单的框架。(我还可以看到,这种“膨胀”主要是有充分的理由提供最大的灵活性。但是,您是否希望获得最大的灵活性并处理随之而来的复杂性,或者是一个更简单、指导原则明确的方法,这是一个有效的问题。)

    不管怎样,我将为手头的项目争取Zend,因为我对框架的主要用途是 组件库 . 我不想采用Zend的MVC模型,我只需要国际化、会话处理等高质量的组件。因为我正在构建一个可再发行的产品,所以Zend的灵活性(例如支持五种不同的字典格式)非常受欢迎。此外,ZF似乎是唯一一个允许我想要的自由度的框架(没有强制使用模式、文件结构等),据我所见,没有其他框架提供这种自由度。

    对于未来的项目,我希望利用实际的MVC特性,并完全服从框架关于应用程序构建、命名、风格和过程的约定,不过,我可能不一定是为了Zend,而是为了一个更简单的框架,比如YII或Kohana。

    6 回复  |  直到 15 年前
        1
  •  15
  •   clyfe    15 年前

    Zend框架是最佳选择 . 它们的最佳框架API、可读代码、语言约定、良好的文档、ComUnity、支持等
    我对它的不喜欢(主观上,人们会投我反对票)是:

    • Zend_Form ,有它的用途,但一般来说太突兀了,我只是想构造我的HTML,而不是与API和装饰师斗争。
    • Zend_Db_Table 很强大,但要实现你的目标需要很多工作,Rails教会我要懒惰。不,我不想为一个模型编写3个类,一个用于表,一个用于行集,一个用于行,然后将它们彼此绑定,依此类推。我 可以 需要 表数据网关 在某种程度上,但是现在我真的想用 活动记录 .
    • 没有活动记录。使用php 5.3中最新的静态绑定,这可能会改变…

    我花了几个月的时间努力使用这两个,直到我终于拥有了它。

    我克服了他们(Ruby on Rails的想法)

    • 使用纯视图帮助器而不是Zend_窗体,如下所示:
      echo $this->formText('email', 'you@example.com', array('size' => 32));
    • 像模特一样有自己的活跃记录( http://www.phpactiverecord.org )
    • 对模型进行验证和筛选
    • 对于真正极端的角落情况,我们可以回到zend_form+zend_db_表,尽管 从来没有感觉到需要。

    编辑
    有一些新孩子值得检查,比如 Laravel

    ZF真正战胜其他框架的一件事是路由器、控制器和视图、约定、清晰可读的代码、进程。

        2
  •  9
  •   pestaa    16 年前

    除非你期待一个拥有20多个开发者的大型项目,否则如果我是你,我会做任何事情,包括牺牲一只手臂和/或一条腿 避免Zend框架 .

    • 你发现的好的选择可能看起来很方便——到了你发现其他1K+设置的时候,这看起来像是在库中浪费时间和开发人员的精力。您很快就会发现自己置身于定制的海洋中,被设置、接口和抽象类所淹没。
    • 文档不仅详细,而且因此非常冗长和复杂(类似于库本身)。我希望第三节课能帮助我,而不是妨碍我。
    • 最重要的因素显然是我的发展速度。如果你周围没有一堆大学,Zend框架应该认真考虑是否要放弃。
    • Zend问题跟踪器中有太多人在许愿,有太多人在实现代码。到目前为止,我还没有看到这数百万行背后有任何严肃的愿景。

    我的两分真的降到了一点:尽管(或者更确切地说,是因为?)它得到了PHP公司的支持,对于个人使用和中小型项目来说,它过于膨胀。

    我的团队目前正在使用yii进行中型项目。它也不是完美的,但是与老大哥相比,它的实用性和对开发人员的友好性要好得多。

        3
  •  6
  •   Pascal MARTIN    16 年前

    我对ZF没有什么大的反对意见——恰恰相反;当然,我还没有使用所有的组件 (不确定是否有人有) 但是我从来没有看到过任何看起来“糟糕”的东西。

    当开始一个新项目时,我通常会自己使用Zend框架,实际上,如果我必须选择…


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

    • Zend框架可以与其他组件集成:您谈到在应用程序中使用ZF的组件,但没有提到相反的情况。
      • 教义就是一个很好的例子 (symfony的默认ORM) 可以很容易地与ZF一起使用,而且比 Zend_Db ,在我看来!

    除此之外,我不得不说我同意你的观点。


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


    关于未来:

    • Zend框架是根据BSD许可证发布的——这意味着存在的内容不能被封闭源代码。
    • 关闭它意味着它的结束,无论如何,在PHP社区的上下文中,这将是一个愚蠢的举动。
    • ZF 2.0的工作才刚刚开始 (要求使用php 5.3,btw)
      • 也许,根据您的应用程序时间表,它可能很有趣?
      • 至少如果您不需要在至少两个月前开始开发…
        4
  •  4
  •   Bryan M.    16 年前

    我们已经和ZF一起开发了将近一年了,我对它没有什么大的疑虑。有一点学习曲线,但一旦我理解了它,我就意识到这个框架的组合是多么的好。

    与其他框架相比,有些人可能会指出缺乏模型库是一个缺点。实际上,我不喜欢别人告诉我该用什么,而把信条和ZF结合起来是没有摩擦的。如果您在PHP5.3中开发,并且想要一个ORM,我强烈推荐条令2(注意:它仍然在阿尔法测试中)。

    另一件伟大的事情是能够选择你想要或不想要的东西。我不太喜欢Zend_的形式,但如果我不想,我不必使用它。此外,还有一个结构非常松散的插件架构,可以让您轻松地将自己的库连接到框架中。

    所以,我非常喜欢它。

        5
  •  3
  •   Sebastian    16 年前

    Zend框架中缺少的一件事是一个适当的或映射器。Zend_DB是可以的,但是有一些缺点,特别是在处理大型数据库(许多表)时,它变得非常麻烦。但是有几个或映射器可以集成(例如 zend-framework-orm Doctrine 如Pascal Martin所述)。

    但是是的,Zend非常出色,非常强大,我觉得在某些方面,它在接口和功能方面应该是/应该是PHP。

    除了显而易见的,我特别喜欢的是支持 Dojo 对于富客户端应用程序和 SOAP support .

        6
  •  2
  •   Nick Edwards    16 年前

    我在一个项目上使用ZF作为唯一的开发人员。虽然学习曲线相当陡峭,但我没有遇到太多上面描述的问题。总的来说,我发现框架非常灵活,并且组件的松散耦合使得在ZF方法不适合我的需要时,可以很容易地做我自己的事情。

    但是最近开始使用python之后,我会说使用python;)

    推荐文章