代码之家  ›  专栏  ›  技术社区  ›  aWebDeveloper

Cakephp和Yii:相似/不同/速度?

  •  28
  • aWebDeveloper  · 技术社区  · 14 年前

    我是一个CakePhp程序员。我决定试试Yii框架。我想了解一下CakePhp与Yii的相似之处和不同之处。而且,Yii是否比他们所说的CakePhp快得多?

    8 回复  |  直到 14 年前
        1
  •  42
  •   ZaQ    14 年前

    从个人经验来看,这两个框架有几个不同之处,特别是在cake和yii中处理模型的方式。

    • 在cakephp中,不能使用composite 主键,这是主键 我的交易破坏者。混合成的 Yii支持主键。
    • 卡克普 执行 约定,而yii 帮助 按照惯例,你不是被迫遵循某一标准的。而强制公约是一个很好的方式来建立良好的编程实践,最终的灵活性,YI提供赢得这一轮为我。
    • 开箱即用的性能,我认为yii是有优势的,但是和性能调整一样,有适当的缓存配置,只要你在使用ActiveRecord模式时小心,它们就不会有太大的区别

    顺便说一句,我在CakePHP和Yii中都是web应用程序实现的领头羊,我从团队得到的反馈是经验不足的团队更喜欢CakePHP,而Yii则更喜欢经验丰富的团队。做你想做的。

        2
  •  16
  •   webaholik Unixmonkey    10 年前

    一个老职位,但只是增加一些经验。

    我用蛋糕已经有一段时间了。准确地说是3年。

    目前Yii绝对是PHP中MVC技术的领先者。这是一个目前其他PHP框架无法与之相比的框架。我个人对“网格”印象深刻。。。我认为PHP方面在某种程度上一直缺少这一点:)它的速度惊人,适合范围广泛的开发人员。

    对于CakePHP:我读过很多博客,人们声称可能会坚持 “惯例” “严格” 框架的。

    也就是说,我同意也不同意。一旦你了解了,那些通常被认为是显而易见的说法。蛋糕的规则 引用 军队 引用 很容易被覆盖。最重要的是人们没有注意到的是 为什么公约是强制性的?

    如果你是一个有很大生产压力的开发人员,我会说 自动魔术 在场景后面运行的蛋糕,例如获取相关模型数据、保存相关模型数据、定义基于 习俗 真是太神奇了。

    遵循这些惯例所带来的整洁在这里无法解释,而只能由经验来解释。

    我也读过很多博客,在那里我看到了对框架速度的抱怨。根据我的经验,你应该 读这本书。 人们定义关系的数量,Cake默认获取所有相关的模型数据。您可以重写此行为并仅获取所需的数据。事实上,你的束缚,解开你的模型飞行。蛋糕也有一种行为叫做 “可容纳” 就为了这个目的。

    一旦你的手放在蛋糕上,生产和发展是真正的“迅速”。

    而且,自从CakPHP 2之后,情况发生了很大变化,它的速度非常快,而且更具可扩展性。

    总之,我真的相信Cake的文档非常糟糕;有了更好的文档、更多真实世界的示例和存储库,它将是一个更强大的竞争者。

        3
  •  5
  •   ls_ttt    12 年前

    两个框架都非常相似,但我喜欢Yii,因为它速度快,在模型上使用延迟加载,上百个帮助程序(jQuery小部件),不需要XML/YAML,很多扩展,控制台和Gii代码生成器,没有魔术的管理界面(可自定义,+控件),活动论坛,完全和美好的OOP设计,甚至系统。。。等。

    Cakephp也是一个很好的框架,我喜欢他们正在计划培训课程。

        4
  •  5
  •   Web Developer    10 年前

    蛋糕与意的区别

    1. Cake有每个控制器的模型,其中Yii有每个动作1个,即控制器独立于Yii中的特定模型
    2. 在Yii中,您必须在每个操作中手动指定视图和模型
    3. 在Yii中,除非手动指定,否则不会获取相关和关联的记录
    4. 在Yii中,一个模型可以是两种类型(即扩展自)活动记录模型或表单模型,这取决于您是否要分别保存数据
    5. CAKEPHP强制执行公约,而YII是灵活的。
        5
  •  4
  •   vsecades    12 年前

    我不同意所有那些抨击卡凯普的人。作为两个框架的用户,如果你知道你在做什么,CAKEPHP是非常灵活的,这意味着它们要求人们使用约定,但是同样的文档告诉你如何绕过这一点。到目前为止,还没有提供真正的基准,所以你们都感到羞愧。。。

    根据我的经验,我不得不为Cake做性能调整,而不是Yii,所以我想我还不能比较这些东西应该如何工作或者我希望它们如何工作。另外,大多数的基准测试都使用Cakephp和其他现成的框架,所以我认为Cakephp的性能会很差。

        6
  •  1
  •   thevikas    11 年前

    我和cakephp共事了2年,几乎完成了我在Yii的第一次工作。(我也在ZendF干了一年,讨厌它) CAKEPHP具有严格的体系结构,但其灵活性有很大的局限性。 Yii实际上是完美的一种方式,我称之为“黑客我”。最好的特性是它以一个空的控制器类开始您的一天,该类用于继承您的所有控制器。但很快我就发现,我可以使用特殊的应用程序范围(比如render)跳入并重写标准yii函数。在蛋糕上,你不能做很多黑客在你的应用程序代码。您最终将转到core目录中的一些非常特殊的情况(当您进行核心更新时,这是一个非常糟糕的主意)。

    与cakephp相比,yii中的插件/扩展非常容易创建。

    直到我知道,cakephp不支持模块。我自己并不是一个模块迷,但最终当你的应用程序代码增长时,你会想把它分成一个单独的组,例如,你可以将模块外包给其他人。

    我相信,cakephp内核足够重,可以在高流量站点上减速。ZendF更糟。Yii在调用操作时有一个较小的调用堆栈。

    没有cakephpt.php,但是有一个yiit.php(整个框架在单个文件中,仅用于生产)用于使用apc/etc预编译yii中的所有内容,并在系统文件打开调用中节省几毫秒。

    YII的URL规则集和它的反向算法对于php中的其他框架来说是无可比拟的。与cakephp相比,IMO yii URL配置太简单了。然后,当你调用createUrl时,它也开始从同一个配置中创建准确的浏览器url,这使得你的应用程序中的url只随配置文件而改变。如果您选择将控制器/模块移动到一个单独的(子)域中,只需更改配置,您的应用程序代码可能会粗心大意。

    模型具有属性标签、规则的方式,这些也可以更改。所有模型方法都支持get/post属性-lifesaver。然后关系规则也比cakephp中的功能要好得多。某些规则中的验证甚至原始PHP代码都具有很大的灵活性。

    非常灵活的文件路径约定对于YII也是唯一的。然后子布局也使创建视图的可重用性变得非常容易。

        7
  •  0
  •   Jason    10 年前

    我试过学习Cakephp,但是文档虽然很粗放,但是结构很差。例如,在手册的FormHelper部分,它讨论了表单选项,但没有解释它是如何工作的,只是语法,然后显示html输出。对于像我这样的初学者,我想知道语法可以,但是,同时,收集的表单数据去哪里,我如何获取输入字段,我如何指导表单输入去哪里,什么意思是“创建表单的上下文”,这个上下文是什么,它是如何使用的等等。

    这是什么意思 ,

    “假设用户拥有和归属于任何组。在控制器中,使用“选择”选项设置camelCase复数变量(本例中为“组”>“组”,或“ExtraFunkyModel”>“extraFunkyModels”)。在控制器操作中,您将放置以下内容:“。

    我确实研究过Codeigniter,它的解释非常直观,但是Cakephp文档虽然呈现得很好,但它并没有解释什么,而是读起来更像一本参考手册。我目前正在研究Yii,虽然它比Codeigniter更复杂,但文档比Cakephp更具信息性,因此也更容易理解。

        8
  •  -4
  •   Ben    12 年前

    Yii对于MVC初学者来说更好,但是cakephp对于初学者来说有点困难。 两者都是不错的框架,但是Yii在net中有更多的教程或文档。