首先,让我为又一个框架问题道歉。但我认为这与通常的“我应该选择什么框架?”有足够的不同。以保证它。
这是我的情况:在过去的一年里,我一直在使用自定义框架。它被用于从小型 CMS 到大型站点甚至中型社交网络的所有内容。它工作得很好,但我现在看到了它的局限性。所以,我决定改用第三方框架。据我所知,更简单的框架(CI、Kohana、Cake)似乎太死板了——所以这让我转向了 ZF。但是,我也听说 ZF 可能过于灵活,因此难以合作。更复杂的是,我正在寻找一种放之四海而皆准的解决方案;我需要一个适用于小型项目到大型项目的设置。我是主要开发人员,但我需要我的合作伙伴最终能够学习该系统并帮助完成不太复杂的编程任务。
我研究过 Doctrine,我喜欢它。所以我倾向于将 Symfony(带有 Doctrine)作为 ZF 的主要框架来填补空白。另外,我需要能够将自己的作品添加到与任何第 3 方库并行的该平台。我希望这会为我提供一个可靠的、可扩展的平台,因为我们真的不能每隔几个项目就更换框架。
我正在寻求与我现在处境相同的其他人的建议。任何建议将不胜感激。
编辑:我已经在下面发布了我的解决方案,希望能帮助处于相同情况的其他人
经过一番研究后,我决定使用 Symfony。以下是我的理由:
- 比 ZF 更简洁
- 由于使用了 YAML 文件,因此看起来非常可定制(但我从未感到被它们淹没)
- 自定义类的自动加载不需要像在 ZF 中那样的任何额外工作(尽管在 ZF 中设置起来并不难)
- 开发人员工具栏很棒,他们在 1.3 版中添加了一些不错的功能
- 能够使用来自其他框架(ZF、eZComponents)的部分让我确信我不会在找到我需要的东西时遇到困难
- 与 Doctrine 捆绑在一起并且非常容易设置(事实上 Doctrine 将成为 ver 1.3 中的默认 ORM)
- Symfony 似乎有一个更大的社区。 Google“symfony tutorials”与“zend framework tutorials”,你会看到结果数量上的巨大差异
- 大量文档:教程(目前 Jobeet 教程非常好)、API 引用,以及对框架及其基本原理的更易读的描述
- 雅虎!已经将它用于他们自己的一些项目 - 很高兴看到大牌支持框架恕我直言
编辑:为了帮助处于相同情况的其他人,这里有一些我不喜欢 Symfony 的地方:
- 不遵循 PEAR 命名方案(ZF 遵循)
- 内部类以“sf”开头。这违背了类名首字母大写的做法
- 变量和函数写成_like_this,而类方法是驼峰式的——这对我来说似乎很草率
不过,这些都是表面问题;困扰我的事情,因为我喜欢以我的方式做事。我意识到,无论何时使用第三方软件,您都必须愿意做出一些牺牲。
ZF 当然是一个很好的框架,但我觉得使用 Symfony 作为主要框架并使用 ZF 的部分扩展它是我和我的团队的最佳选择。
编辑
从最初发布这篇文章到现在已经 2 年了,而且由于它仍然很受欢迎,所以我想我应该快速更新一下。在过去的 2 年里,我可能使用 symfony 1.x 构建了大约 25 - 30 个项目,我对它的表现非常满意。作为一个全栈 MVC 框架,与 Doctrine 合作,它几乎处理了我交给它的所有事情。无论它无法处理什么,都可以轻松添加我自己的自定义代码。事实上,这就是我最喜欢 symfony 的地方——它是多么容易扩展。我最终构建了一堆插件和 Doctrine 行为,大大减少了开发时间。管理员生成器工具是天赐之物。我仍然在这里和那里的一些项目中使用 symfony 1.4,但我决定现在主要关注使用 Symfony2。它与 symfony 1 完全不同,但我真的很欣赏它的架构。更重要的是,它似乎比 symfony 1.x 更容易扩展。我确实错过了 1.x 的一些功能,但这是您在切换框架时必须做出的牺牲。