Php 对于web开发商店(10+;),Symfony是否比Zend更好,因为它是一个完整的堆栈框架?

Php 对于web开发商店(10+;),Symfony是否比Zend更好,因为它是一个完整的堆栈框架?,php,zend-framework,frameworks,symfony1,Php,Zend Framework,Frameworks,Symfony1,我的团队正在考虑使用一个框架来开发网站和应用程序。一些老年人认为我们应该使用Zend框架,因为它更容易选择功能,所以我们的框架将更轻 然而,我担心他们只是在考虑轻量级框架将具有的技术优势。在我看来,最好有一个完整的堆栈框架(我是Symfony的支持者),因为 它还将为我们提供一种标准的工作方式,而无需编写新的文档 如果我们想使用新功能,我们只需要阅读文档,看看如何使用它,而不必首先将它构建到Zend的设置中 我不希望所有人都能回答我的问题,但这正是我在寻找答案的原因: 我说的有道理吗 你有没有

我的团队正在考虑使用一个框架来开发网站和应用程序。一些老年人认为我们应该使用Zend框架,因为它更容易选择功能,所以我们的框架将更轻

然而,我担心他们只是在考虑轻量级框架将具有的技术优势。在我看来,最好有一个完整的堆栈框架(我是Symfony的支持者),因为

  • 它还将为我们提供一种标准的工作方式,而无需编写新的文档
  • 如果我们想使用新功能,我们只需要阅读文档,看看如何使用它,而不必首先将它构建到Zend的设置中
  • 我不希望所有人都能回答我的问题,但这正是我在寻找答案的原因:

    • 我说的有道理吗
    • 你有没有遇到过类似的情况,你是如何处理的
    • 你有没有更多的论点可以让我重新考虑自己的观点
    背景:
    我在一家小商店工作,大约有10名程序员。我们主要编写PHP程序。我们使用一个非常简单的内部开发的框架和ORM库,这些框架和ORM库实际上没有文档记录,除了最基本的功能(没有验证程序、没有事务、没有缓存、没有身份验证)之外,什么都没有。

    Symfony非常易于使用,可以获得一个功能齐全的站点,其中包括会话、缓存、单元和功能测试,在极短的时间内自动部署和运行更多功能。您只需要担心访问和显示数据的代码。尽管它可能不像您自己的实现那样轻量级,但您必须维护的代码量将更少

    推进/克里奥尔ORM运行良好,内置了验证器等,并设置为可开箱即用

    在将内部框架转换为Symfony时,我能够重用大量库代码,只需将其放在Symfony启动时扫描的一个lib目录中即可

    虽然我没有使用它,但Symfony中内置了一个Zend桥,允许您在需要时使用Zend模块


    希望这能有所帮助。

    我在这两个方面的经验都有限,但是为Zend设置“标准”的一个好的起点是遵循他们的教程使用不同的模块-其中许多模块提供了适用于99%项目的合理默认设置


    我想说,这取决于你需要它的目的——Zend的灵活性,Symfony的快速启动和预先制定的标准,如果你的项目没有特别的需要。

    我认为ZF文档和社区参与更好。我还喜欢它的命名方案、编码标准和可扩展性。ZF似乎还从许多从事自己的宠物项目的不同人员那里获得了许多新特性和对现有类的改进,如开源项目

    我真的不明白Symfony对于一个由10名程序员组成的团队来说有多大优势。显然,您应该能够相对快速地为新项目设置默认配置,并在ZF之上和之外构建大量可扩展性。

    ZF如何不是“完整堆栈”?它似乎包含Symfony所包含的每个元素,然后是一些元素。此外,采埃孚有一个“选择你的毒药”的方法,允许你用不同的方法使用不同的碎片。(例如,我们在许多不同的地方使用Zend_Config,这样每个人都可以期待一个合理统一的配置系统,即使是在很小的代码片段上)

    然而,我担心他们只是在考虑轻量级框架将具有的技术优势。在我看来,最好有一个完整的堆栈框架(我是Symfony的支持者),因为


    这在很大程度上取决于您正在构建的应用程序的类型。如果您正在构建大量低复杂性、主要是内容驱动的应用程序,那么Symfony将大放异彩。另一方面,如果您的应用程序不符合Symfony的裸体对象范例(例如,如果它很复杂且不完全专注于内容管理),您可能会发现它更像是一个障碍,而不是一个帮助。

    为什么两者都不适合?我从2006年开始使用symfony,一年来一直是一个真正的条令迷,几个月来,通过将Zend组件直接集成到我们的symfony应用程序中,我们在生产力阶梯上取得了许多进步

    symfony的真正优势在于一切的解耦,以及框架的易扩展性。你几乎可以替换整个东西的每一层。只需在/lib/中复制/粘贴Zend目录,并在/config/ProjectConfiguration.class.php中添加此单例:

        static public function registerZend()
    {
        if (self::$zendLoaded)
        {
            return;
        }
    
        sfToolkit::addIncludePath(sfConfig::get('sf_lib_dir') . '/vendor', 'back');
        require_once(sfConfig::get('sf_lib_dir') . '/vendor/Zend/Loader.php');
    
        Zend_Loader::registerAutoload();
        self::$zendLoaded = true;
    }
    
    并自由使用任何您可能喜欢的Zend组件。
    您可能会对新的Jobeet教程感兴趣,尤其是在使用Zend_Lucene_Search的搜索部分。

    我知道这个答案非常古老,但现在仍然相关,现在更容易将两者合并,Symfony2和ZF2现在都使用Composer和Psr-0自动加载。我使用了完整的symfony2.1堆栈,并添加了一些ZF2包,甚至还添加了来自ZF1的Zend_Pdf