我们正在为一个高效的网站评估一些PHP框架。CakePHP看起来很有趣,但我们不知道它是否适合我们的需要。
基本上,当您查看CakePHP的文档和教程时,它看起来非常有希望。然而,到目前为止,总是有一些东西困扰着我,也许已经在高效项目中使用了CakePHP的人可以帮我回答这个问题?
单个记录的
发布于 2011-02-10 16:40:37
我使用了CakePHP、Zend,我还编写了“从头开始”的应用程序,只使用了本地类之类的东西。对此,我想提一下,我经常使用CakePHP,所以,您可以这样做。
发布于 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建模为更复杂的东西,那么您将不得不与它们做斗争。下面是一些例子:
In
即使对于“大型”站点,我也会强烈推荐CakePHP,只要您的域模型能够很好地符合活动记录。如果不是,选择一个不同的框架。
发布于 2011-02-10 11:24:35
既然你在征求意见,那么我不得不说,我反对CakePHP。
我最大的不满是,它仍然在使用PHP4 (用它编写并生成代码)。那么,为什么要倒退?它与PHP5兼容,但框架本身围绕着PHP4。
我建议您看看Symfony或Zend。Symfony是最好的,如果你想要更多的结构到位-它迫使你坚持它已经建立的MVC结构。
另一种选择是Zend,但它更像是一个“自己动手”的框架,或者更像是一组库。你需要自己把它放在一起,而且它没有任何像Symfony那样的严格结构。
显然还有其他的框架,但我推荐前面提到的。另一个您可能想看的是Codeigniter。
https://stackoverflow.com/questions/4956146
复制相似问题