我对 CakePHP 有一些了解,并认为它是一个很棒的框架。然后,我遇到了一个叫做 Qcodo 的东西。它是另一个 PHP 框架。我一直在听 Zend。它们看起来都非常整洁,但我想知道所有这些框架之间有什么区别。
在我浪费太多时间学习另一个框架之前,有没有人知道每个框架的优缺点?
他们似乎都有一个共同的目标:使 PHP 中的 Web 应用程序开发变得简单、模块化和可扩展。
编辑在CakePHP 和 Zend 之间发现了这个有趣的比较结果
我对 CakePHP 有一些了解,并认为它是一个很棒的框架。然后,我遇到了一个叫做 Qcodo 的东西。它是另一个 PHP 框架。我一直在听 Zend。它们看起来都非常整洁,但我想知道所有这些框架之间有什么区别。
在我浪费太多时间学习另一个框架之前,有没有人知道每个框架的优缺点?
他们似乎都有一个共同的目标:使 PHP 中的 Web 应用程序开发变得简单、模块化和可扩展。
编辑在CakePHP 和 Zend 之间发现了这个有趣的比较结果
我从来没有听说过Qcodo。
CakePHP 是一个功能齐全的框架,具有很多自动化功能,但不幸的是,它是目前最慢的框架之一。它也没有官方论坛,也没有那么忙碌的社区。它试图成为一个 Ruby on Rails 的克隆,但它不能很好地与 PHP 一起工作。
Zend 令人印象深刻。它拥有强大的社区和企业支持。它很有特色,但也很臃肿(参见那个基准),所以它的性能适中。不过据我所知,您可以在不使用整个框架的情况下单独使用组件,甚至可以将它们与其他框架一起使用!
我在工作中使用CodeIgniter,我喜欢它。它是迄今为止对新手最友好的框架,并且根据您的 CakePHP 经验,它应该是轻而易举的事。它有非常好的文档,详尽、清晰且写得很好。它有一些其他框架没有的特性(例如 ORM),但 CI 拥有我见过的最活跃的框架社区之一。由于为它编写库很容易,因此您可以找到一个库来做几乎任何您想做的事情 - ORM、身份验证等。此外,如果您想要一个用于 CI 的 ORM,我推荐DataMapper。
您可能还想查看Kohana。它是 CodeIgniter 的衍生产品。它是严格的 PHP5 并且有一个 ORM 和一些更多的特性。虽然我自己没用过,但我听说过好东西。
我建议阅读每个功能并确定您需要什么,并查看您将最常使用的功能的代码示例。
有些框架对你来说可能很直观,但对其他人来说却不是。选择 PHP 框架是 IMO 非常个人的选择。
在使用 CakePHP 一段时间后,我自己一直在使用 CodeIgniter。切换的主要原因是性能,但 CakePHP 在过去几年里取得了长足的进步,所以这可能不再是一个正当的理由。
[编辑:显然,它仍然存在性能缺陷,请参阅 ryeguy 的帖子和评论。]
我从来没有发现 Zend 是直观的,也从未研究过 Qcodo。
维基百科有一个按语言列出的网络应用程序框架列表,您也可以找到帮助您做出决定的信息。
我同时使用 QCodo 和 Zend 框架
QCodo 是一个代码生成器的 MVC 框架,许多代码是从您的数据库设计中生成的,并为您的每个数据库表生成可供使用的搜索和编辑表单。它还处理数据库表关系,为表之间的一对多/多对多关系预先生成一组方法。
由于这些代码是从您的数据库设计中生成的,因此所有代码都针对每个项目进行了优化。简而言之,它是一个框架database oriented
..................................................... .
据我从这个项目的创始人那里知道,Zend 框架的设计是为了解耦所有模型,实际上他们正在为不同类型的项目部署大量现成的模型,来自 Zend_ACL(访问控制列表身份验证)、Zend _Search _Lucene、Zend _Service _Twitter、Zend _Service _Flickr 等)。我认为未来会有。
我投票给 Qcodo!前段时间我做了一个最适合我的研究,结果是qcodo,现在我不能不考虑使用qcodo,或者至少他的数据库处理部分,这绝对是太棒了。
我认为 Simfony 是最好的 PHP 框架,虽然我没有使用它。我主要使用 Qcodo/Qcubed,但我正在转向 Rails,这就是我觉得 Simfony 不错的原因。我尝试了 Code Igniter 并没有,它使用简单,轻巧(我想),但它没有任何脚手架,但现在可能会改变。正如另一个人所说,您可以使用外部 ORM,因为 CI 默认情况下没有。Zend Framework 有一个非常模块化的架构,并且有很多库。我使用了 Zend_ACL,但是权限继承很痛苦,所以我自己实现了,Zend_Lucene 查询没有找到我需要的数据...... ZF 是一个非常低级的框架,它也需要一个 ORM。我看了一下 CakePHP,但我发现它的数据库接口不是 Propel、Qcodo 和 Doctrine 级别的,但我认为你可以使用自己的库。
我通常希望在一个框架中:
我遇到的大多数高级 PHP 开发人员都使用 Simfony,但这只是我个人的经验。
最后,我会使用 Simfony 位,我强烈建议尝试使用 Ruby 或 JRuby 的 Rails。
确定最佳框架应该是逐个项目的决策。如果您有一个使用 innoDB 引擎的大型数据库,并且表之间存在大量关系,请查看 QCubed (Qcodo)。我没有看到任何框架可以处理复杂的 ORM 关系——甚至可以轻松地反转关系!它在处理复杂查询(例如反向关系查询)方面也相当快——尽管任何框架中的性能很大程度上取决于编码器高效编写的能力。
如果您正在构建一个 CMS,那么您将需要 Zend 或 Symfony 来实现 MVC 功能。QCubed/codo 据说是基于 MVC 的,但它似乎不像 Zend 那样清晰。QCodo 还依赖于从不更改数据库的结构 - 可以管理,但是一旦站点启动,向数据库表添加新字段真的很痛苦,因为它会为每个表自动生成自定义类。
我使用 CodeIgniter 主要是因为它有非常好的文档并且以易于使用着称。此外,拉斯穆斯说这是他最喜欢的,这无疑是一个蹩脚的理由,但我没有抱怨。
不要忽视 Symfony,它会摇摆不定。我想说它最大的优势是在各个层面上始终如一的“遵循最佳实践”方法、充满活力的社区和出色的文档。
我正在使用 QCodo 的继任者 QCubed。它只是你可以从开源 PHP 框架中获得的最好的东西。如果您知道如何使其工作,速度会非常快。唯一的缺点是缺少文档。但是,示例站点很棒。开始使用它,我打赌你会很平静!:)