7

我的工作团队正在考虑使用一个框架来开发网站和应用程序。一些资深人士认为我们应该使用 Zend 框架,因为它更容易挑选功能,因此我们的框架将是轻量级的。

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

  1. 它还将为我们提供一种无需编写新文档的标准工作方式。
  2. 如果我们想使用新功能,我们只需阅读文档以了解如何使用它,而不必先将其构建到 Zend 设置中。

我不希望每个人都能回答我的所有问题,但这就是我在答案中寻找的:

  • 我在这里有意见吗?
  • 你有没有遇到过类似的情况,你是怎么处理的?
  • 你有更多我可以使用的论点或者可以让我重新考虑我自己的观点吗?

背景:我在一家有大约 10 名程序员的小商店工作。我们主要编写 PHP。我们使用了一个非常简单的内部开发框架和 ORM 库,它们实际上没有文档记录,除了最基本的功能(无验证器、无交易、无缓存、无身份验证)外缺少任何东西

4

6 回答 6

14

为什么不两者兼而有之?我从 2006 年开始使用 symfony,一年来一直是 Doctrine 的忠实粉丝,几个月来,通过将 Zend 组件直接集成到我们的 symfony 应用程序中,我们在生产力阶梯上迈出了许多台阶。

symfony 的真正优势在于一切的解耦,以及框架的易扩展性。您几乎可以替换整个事物的每一层。只需将 Zend 目录复制/粘贴到 /lib/ 中,然后在 /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 的搜索部分。

于 2009-01-02T12:35:19.683 回答
1

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

于 2008-12-26T14:31:08.980 回答
1

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

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

于 2008-12-27T16:40:38.550 回答
1

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

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

于 2008-12-25T20:01:34.060 回答
1

Symfony 真的很容易使用,并且可以在很短的时间内获得一个功能齐全的站点,包括会话、缓存、单元和功能测试、自动化部署等等。你只需要担心代码来访问和显示你的数据。虽然它可能不像自己滚动的实现那样轻量级,但您必须维护的代码量会更少。

Propel/Creole ORM 运行良好,内置了验证器等,并且设置为开箱即用可扩展。

在将内部框架转换到 Symfony 时,我只需将其放入 Symfony 在启动时扫描的 lib 目录之一即可重用大量库代码。

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

希望有帮助。

于 2008-12-25T18:09:31.273 回答
0

我对这两者的经验都有限,但是为 Zend 设置“标准”的一个很好的起点是遵循他们使用不同模块的教程——其中许多给出了适用于 99% 项目的合理默认值。

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

于 2008-12-25T19:30:58.147 回答