首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大型项目的CakePHP

大型项目的CakePHP
EN

Stack Overflow用户
提问于 2011-02-10 10:52:58
回答 6查看 4.2K关注 0票数 5

我们正在为一个高效的网站评估一些PHP框架。CakePHP看起来很有趣,但我们不知道它是否适合我们的需要。

基本上,当您查看CakePHP的文档和教程时,它看起来非常有希望。然而,到目前为止,总是有一些东西困扰着我,也许已经在高效项目中使用了CakePHP的人可以帮我回答这个问题?

单个记录的

  • Writing/Reading数据在CakePHP中看起来非常整洁。如果希望从具有复杂条件的多个表中读取数据、group、where子句,会发生什么情况?对于基本的管理接口,it?
  • Scaffolding是如何处理CakePHP的?定制这些东西有多容易。假设我的一张桌子上有一把外键。当我创建一个脚手架页面时,CakePHP会自动为我创建一个下拉列表吗?如果我想过滤可能的项目呢?假设我想将两个字段合并到视图部分中的一个字段中,但是当我编辑它时,我应该能够单独编辑这两个字段。这有用吗?
  • ,您认为您使用CakePHP开发的速度比普通的PHP更快吗?
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-02-10 16:40:37

我使用了CakePHP、Zend,我还编写了“从头开始”的应用程序,只使用了本地类之类的东西。对此,我想提一下,我经常使用CakePHP,所以,您可以这样做。

  • (Writing/reading数据,复杂的条件)您当然可以完成您提到的所有事情。其他方法是正确的,因为它试图为您抽象SQL操作。我还没有一个无法转化为Cake的“术语”的查询;复杂的地理空间查询、联接、etc.
  • (Scaffolding,复杂条件)脚手架实际上只是作为某种“跳跃式”来帮助确保模型关联的设置正确,不应该被用作永久的解决方案。为了达到这个目的,是的,它在内省你的关系和提供相关的markup.
  • (Faster开发方面做得相当好)。有一个庞大的社区,有大量的插件或例子,以帮助您开始。无论您选择什么,选择一个框架几乎肯定会使您“更快”,如果只用于处理设置应用程序所带来的细节。
票数 8
EN

Stack Overflow用户

发布于 2011-02-11 00:03:27

这取决于你对“大”的定义。你指的是大数据集吗?一个非常复杂的域模型?或者只是很多很多不同的控制者/行动?

写入/阅读数据。

在CakePHP中,您可以使用普通SQL做任何事情。这样做可能并不总是很好,但在最坏的情况下,它并不比纯SQL更糟糕。

但你真的不应该考虑查询。你应该考虑一下你的领域模型。CakePHP实现活动记录模式。如果您的域模型很好地映射到活动记录模式,它将非常好地工作。但如果没有,我就不会推荐CakePHP。如果您的域模型没有映射到活动记录,那么您将花费大量的时间与蛋糕的方式做事情。这可没什么好玩的。如果有一个实现Data模式(例如Zend)的框架,情况会好得多。

脚手架

脚手架是临时的。它确实处理外键(如果您在模型中以及数据库中定义外键),但仅此而已。你不能修改脚手架。但是,你可以把它们烤熟!

当您烘焙控制器或视图时,基本上是将脚手架写入文件,作为自己实现的跳转点。烘焙后,你可以做任何你想做的事。烘焙的缺点是,当模型或数据库发生变化时,它不再更新。因此,如果您烘焙一个控制器和视图,并将字段添加到模型中,那么您需要手动将这些字段添加到控制器和视图代码中。

发展速度

在我的例子中,用CakePHP开发网站比用普通代码开发网站要快得多。但是,只有在活动记录适合应用程序的情况下!看我的第一点。即使如此,Cake可能还会更快,但如果有一个更好的适合的框架,我会更快。

其他一些想法

大型数据集

如果您有非常大的数据集和较大的查询结果,那么Cake可能是一个问题。find()操作希望返回一个关联数组,因此所有行都被读取、解析并转换为数组。如果结果集太大,就会耗尽内存。CakePHP不像许多其他活动记录实现那样实现ResultSet对象,这是一个明显的缺点。最后,您将使用子查询手动分页遍历自己的数据。糟透了。我想谈谈我的下一个观点:

列阵

学会爱他们,因为CakePHP爱他们。每件事都是一个数组,它们通常是大的、复杂的和深刻的。一段时间后真的很烦人。您不能向数组中添加函数,因此您的代码比CakePHP使用嵌套对象实例时更加混乱。您可以添加到这些对象中的函数可以帮助保持代码的整洁。

奇怪和不一致

CakePHP有一些真正令人讨厌的臭味隐藏在内心深处。如果Active Record适合您的应用程序,那么您可能永远不会遇到它们,但是如果您试图将CakePHP建模为更复杂的东西,那么您将不得不与它们做斗争。下面是一些例子:

  • HABTM通过自定义模型使用了您正在处理的关系的另一端的定义。
  • 是一些非常奇怪的地方,其中您的前后触发器没有调用(例如,不调用updateAll)
  • 奇数模型->字段()行为。它总是从数据库中查询。因此,在更新模型数据时要小心,不要立即将其保存到数据库中。一些CakePHP函数从Model->$_data获取数据,还有一些函数使用Model->field()。结果可能完全不同,导致一些很难追踪的bug。

In

即使对于“大型”站点,我也会强烈推荐CakePHP,只要您的域模型能够很好地符合活动记录。如果不是,选择一个不同的框架。

票数 8
EN

Stack Overflow用户

发布于 2011-02-10 11:24:35

既然你在征求意见,那么我不得不说,我反对CakePHP

我最大的不满是,它仍然在使用PHP4 (用它编写并生成代码)。那么,为什么要倒退?它与PHP5兼容,但框架本身围绕着PHP4。

我建议您看看SymfonyZend。Symfony是最好的,如果你想要更多的结构到位-它迫使你坚持它已经建立的MVC结构。

另一种选择是Zend,但它更像是一个“自己动手”的框架,或者更像是一组库。你需要自己把它放在一起,而且它没有任何像Symfony那样的严格结构。

显然还有其他的框架,但我推荐前面提到的。另一个您可能想看的是Codeigniter

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4956146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档