CakePHP与Ruby on Rails有何不同?

不久之后,我几乎从未听过CakePHP这个词而没有听到Rails这个词。 这两个框架是否主要基于它们如何遵循MVC模型或者是否具有其他重要的相似性/差异?

对我来说,Rails的主要吸引力之一就是使用Ajax是多么容易。 CakePHP也是如此吗?

CakePHP就像一个廉价的,混乱的Rails ripoff。 它试图像Rails一样没有做任何让Rails变得更棒的东西。 我觉得它有点类似。

CakePHP有一个Ajax助手,它在Rails中执行类似于与Ajax相关的辅助方法,所以是的,在某种程度上,它也是如此。

但是CakePHP实际上是一种徒劳的练习:它的作者写了它,所以他们不必学习Ruby,尽管一起学习Ruby和Rails可能比找出CakePHP的怪异混乱更容易。

(这是来自在日常工作中做CakePHP的人。)


既然你们问过,我对CakePHP的最大抱怨就是它如何设法完全控制面向对象编程的便利性:当然,它实现了与Rails一样多的Active Record模式,但它让你传递数据结构。

我觉得任何有逻辑的人都会使用错误和动态加载属性来实现ORM,这正是ActiveRecord(Rails库)所做的。 设置一个名为$recursive的成员变量以确定要加载哪些关系的整个想法都是明显的缺陷。

基于PHP是非常致命的; 你无法对全局状态做任何事情,你必须依赖mod_rewrite ,你需要为每个请求支付启动惩罚。 当然,对于您正在使用的任何环境都有优化,但仍然存在。 人们说Ruby很慢,但是我自己的Rails应用程序运行速度比CakePHP的运行速度快,最后我查了一下。 我承认没有这方面的数据。

最糟糕的是,CakePHP中的错误就是为我杀死它。 我可以讲任何数量的故事

  • 我们花了两天时间弄清楚为什么CakePHP拒绝连接到正确的数据库主机
  • 由于使用太多组件导致内存上限,我们页面的一半时间空白
  • 生成在AppController中的代码量,因为每个组件加载都需要几兆字节的内存
  • 按摩数据结构的黑色艺术,使XML输出正常工作
  • 我们如何追踪显示在每个页面末尾的空白标记

蛋糕的布局很像Rails,显然需要很多灵感和想法。 Cake是对MVC框架的一个很好的介绍,rails似乎非常直接来自蛋糕体验。

使用JS帮助程序,使用Cake,Ajax非常容易。 事实上,一切都非常简单。 它是一个很棒的框架,特别是对于分布式应用程序(例如cms)或任何其他容易托管php应用程序的好处。

我会看到rails的主要优点是Ruby(因此是更好的OO实现rails等)和社区。 gem(更少/更少的综合蛋糕插件),在线培训材料,书籍(任何人都有说服力的ruby?)聚会团体等。

我没有和CakePHP合作,但我对它的印象并不太好。 如果您正在使用适用于PHP的Railslike框架,我认为您可能会更好地研究Symfony 。 开始使用可能有点复杂,但整个项目似乎比CakePHP组织得更好。

当然,拿一粒盐,因为这些东西是非常主观的。