我是CakePhp程序员。我决定试用Yii框架。我想知道CakePhp与Yii有什么相似之处。另外,Yii比CakePhp快得多吗?
答案 0 :(得分:41)
从个人经验来看,两个框架都存在一些差异,特别是蛋糕与yii处理模型的方式。
作为旁注,我在CakePHP和Yii都有领先的Web应用程序实现,我从团队得到的反馈是,经验不足的团队优先考虑CakePHP,而Yii则是更有经验的团队的首选。按照你的意愿做好准备。
答案 1 :(得分:16)
旧帖子,但只是增加了一些经验。
我一直在使用蛋糕一段时间了。准确地说是3年。
目前,Yii绝对是领导PHP的MVC技术的人。它是一个框架,可能没有其他PHP框架可以比较。我个人对“网格”印象非常深刻......我认为PHP方面总是缺少这种方式:)它速度惊人,适合各种开发人员。
对于CakePHP:我已经阅读了许多人声称并且可能依赖于框架的“惯例”和“严格性”的博客。
那就是说,我同意并不同意。一旦你掌握它,通常做出的声明似乎很明显。每个可以轻松覆盖引用强制引用的规则。最重要的是,人们没有注意到的是为什么要强制执行惯例?
如果你是一个有很多生产压力的开发人员,我会说在场景后面运行的 auto-magic 蛋糕,比如获取相关的模型数据,保存相关的模型数据,定义基于关系的约定绝对是惊人的。
遵循这些惯例所带来的整洁不能在这里解释,只能经历。
我还阅读了很多博客,其中我看到了对框架速度的抱怨。根据我的经验,我会说,你应该阅读本书。人们定义关系数量,默认情况下,Cake会获取所有相关的模型数据。您可以覆盖此行为,只需获取所需的数据。事实上你的绑定,动态解开你的模型。 Cake也有一个名为“containable”的行为。
一旦你掌握了蛋糕,生产和开发真的是“快速”。
此外,自从CakPHP 2以来,它已经发生了变化,它非常快,甚至更具可扩展性。
所有人都说,我真的相信Cake的文档很差;通过更好的文档,更多真实世界的示例和存储库,它将是一个更强大的竞争者。
答案 2 :(得分:5)
两个框架非常相似,但我喜欢Yii因为速度快,在模型上使用延迟加载,数百个帮助程序(jQuery Widgets),不需要XML / YAML,大量扩展,控制台和Gii代码生成器,管理界面没有魔法(+可定制,+控制),活跃的论坛,完全和美丽的OOP设计,甚至系统......等。
Cakephp也是一个非常好的框架,我喜欢他们正在计划培训课程。
答案 3 :(得分:4)
Cake和Yii之间的差异
答案 4 :(得分:4)
我不同意所有那些抨击Cakephp的人。作为两个框架的用户,如果你知道自己在做什么,Cakephp非常灵活,这意味着他们要求人们使用约定,但同样的文档告诉你如何解决这个问题。到目前为止,还没有提供真正的基准,所以你们都感到羞耻......
根据我的经验,我不得不为Cake进行性能调整,而不是Yii,所以我想我还不能比较一下应该如何工作或我希望工作的方式。此外,大多数基准测试都使用了Cakephp和其他开箱即用的框架,所以我希望Cakephp表现不佳。
答案 5 :(得分:1)
我和cakephp合作了大约2年,几乎完成了我在Yii的第一次。 (我也在ZendF做了一年并讨厌它) Cakephp对其严格的系统很有好处,但对其灵活性有很多限制。 Yii实际上是以我称之为“hack me”的方式完美制作的。最好的功能是它以一个空的Controller类开始你的一天,该类用于继承你的所有控制器。但很快我发现,我可以跳入并覆盖具有特殊应用范围的标准yii函数,例如render。在蛋糕中,你不能在你的应用程序代码中做太多的破解。你最终会进入核心目录寻找一些非常特殊的情况(当你进行核心更新时非常糟糕)。
与cakephp相比,yii中的插件/扩展程序非常容易创建。
cakephp直到我知道,不支持模块。我自己不是模块迷,但最终当你的应用程序代码增长时,你会希望将它拆分成一个单独的组,例如你可以将模块外包给其他人。
我相信,cakephp核心足够重,可以减缓高流量网站的速度。 ZendF更糟糕。在您调用操作时,Yii的调用堆栈较小。
没有cakephpt.php但是有一个yiit.php(单个文件中的整个框架,仅限生产用),使用apc / etc预先编译yii中的所有内容,并在系统文件打开调用中保存几毫秒。
YII的URL规则集及其反向算法对于php中的所有其他框架都是无与伦比的。与cakephp相比,IMO yii URL配置太容易了。然后,当你调用createUrl时,它开始从同一个配置中创建确切的浏览器URL,这会使你的app中的url只用配置文件更改。如果您选择将控制器/模块移动到单独的(子)域中,则只需更改配置,您的应用程序代码可能会保持粗心。
模型具有属性标签,规则的方式,也可以更改。所有模型方法支持get / post属性 - lifesaver。那么关系规则也比cakephp的能力要好得多。一些规则中的验证甚至原始的PHP代码都具有很大的灵活性。
非常灵活的文件路径约定也是yii独有的。然后子布局也可以很容易地创建视图的可重用性。
答案 6 :(得分:0)
我曾尝试学习Cakephp,但文档虽然广泛,但其结构很差。例如,在本手册的FormHelper部分,它讨论了表单选项而没有解释它是如何工作的,只是语法然后显示了html输出。对于像我这样的初学者,我想知道语法好,但是,收集的表单数据去了哪里,如何获取输入字段,如何指示表单输入去哪里,这对你来说意味着什么'创建表单的上下文',这是什么内容以及如何使用它等。
这是什么意思,
"假设User hasAndBelongsToMany Group。在您的控制器中,使用选择选项设置camelCase复数变量(在这种情况下为group - > groups,或ExtraFunkyModel - > extraFunkyModels)。在控制器操作中,您将输入以下内容:"。
我确实研究过Codeigniter,它的解释非常直观,但Cakephp文档虽然很好地呈现,但并不能解释事情,但更像是参考手册。我目前正在研究Yii,虽然它比Codeigniter更复杂,但文档比Cakephp更具信息量,因此可以理解。
答案 7 :(得分:-4)