ste*_*ott 68
只是为了平衡这个线程,这就是我喜欢symfony的原因:
从概念上讲,我说的不同之处在于:
我能给出的最好的建议是快速尝试在两者中建立一个自己的简单数据模型,并尝试一些基本的接口,并看看哪种最适合您自己的编码风格.我认为这两个框架都有非常活跃和热情的用户社区,你不会以任何方式后悔你的决定.
del*_*dan 27
arb*_*les 22
一个很大的区别在于模型的创建方式:CakePHP模型是用PHP编写的,Symphony模型是用YAML编写的,由Propel驱动.CakePHP的方法更类似于ROR的ActiveRecord(尽管它不完全是AR实现).总的来说,CakePHP更像是rails-esque.
在我看来,CakePHP的文档和工具有更广泛的目标受众,语法和帮助更容易,但你还没有接受PHP5作为他们的独家目标(自动加载并不是真的存在).总的来说,我更喜欢CakePHP的方法,因为它遵循既定的标准,我赞成它的组织.我也推荐Kohana,因为它有PHP5的优点.
关于这个问题有关于堆栈溢出的另一篇文章,尽管它的焦点有点不同.
编辑:我重新审视了Symfony,找到了我说"不"的原因并想出了这些 - 你的意见和里程可能会有所不同:
CakePHP还提供简单的脚手架和易于理解的CLI工具.Symphony的CLI语法对我来说有点不可思议,Symfony中的'CRUD'也不一样.将它与Symfony的(awkard)动作语法相结合,并投入Symfony设计糟糕(并且难以理解)的网站,并偏爱第三方付费文档(亚马逊上的书籍),并且你在cons栏中有更多的标记.
Tom*_*Tom 14
关于CakePHP和上述限制的一些说法根本不是真的.查询是可能的.你只需要知道如何制作它.CakePHP的"自动化"非常好,所以你可以快速开始运行.它是最快的开发框架(因此它为什么在RoR之后如此紧密地建模,这显然是一个巨大的成功和嗡嗡声).有更多高级行为可以不同地返回数据,并通过指定一些简短的方法调用和数组参数来创建一些更复杂的查询.
然而.据我所知,没有其他框架拥有尽可能多的"自动化"方法和类.Cake采用最常见的任务,并提供了一种简单的方法来完成它.如果你真的很聪明,你将在模型级别完成大部分编码,并使用app_model和app_controller文件,并拥有一个非常高效的应用程序.
控制台很棒,而且一直在扩展.社区真的很棒,有很多贡献可以帮助你让事情更快地滚动.您可以从字面上构建,然后将"片段"移动到位以快速构建应用程序,因为您需要的大部分内容都可用.你没有得到任何其他框架.您通常需要花费更多时间进行编码.
最后.虽然文档滞后,但现在好多了,而Cake在缺乏文档和版本1.1期间也得到了一些严厉的评论......它仍然很好,只是被严重忽视了.随着1.2和现在的Cake2和Cake3即将到来......你会看到很多意见在变化.
我从1.1开始就使用CakePHP.我坚信它.我已将它用于大型企业网站.每天接收数百万次点击...我们已经脱离了WordPress和Drupal等领域的解决方案.当你达到CMS类型网站的那个级别时,我很高兴有CakePHP.同样,Symfony和CodeIgniter将帮助您进行扩展.我也不能对这两个框架说任何坏事.我只能说你会花更少的时间编写代码并找到一个更大的社区(和一个超级友好的IRC频道)与CakePHP.
Jos*_*lez 12
我将通过并记录我对上述关于CakePHP的评论的一些回应,以及其中一些(在某些情况下是正确的)感知错误.
大型网站使用CakePHP运行,其中一些是Mozilla Addons,MIT是Scratch,还有Hot Scripts.CakePHP网站底部有一个更大的列表(http://cakephp.org).无论如何,任何优秀的开发人员都应该能够使用框架构建可扩展的网站,只要框架不是完全愚蠢(CakePHP不是太傻了:D).
确实,没有一个非常好(免费)的CakePHP教程可以贯穿框架的每个功能,但是文档的布局非常好且冗长.任何不明确的内容都可以通过Google Group和IRC清除,我们欢迎对文档进行任何和所有更改/更正.文档不仅仅是核心开发人员的问题,因为很多东西都是特定于应用程序的,人们会提出有趣的提示和技巧,因此每个人都被邀请参与(不仅仅是评论!).当然它都是适度的,因此大多数的cruft /垃圾邮件都没有添加.
代码是模块化的,您可以添加新的代码来取代核心功能.大部分代码都是PHP类.确实,写这样的功能可能是一种负担,我没有尝试使用替代类作为填充.是的,它不处理其他ORM,所以你坚持默认,但这应该在Cake3中修复,它将能够随意混合和匹配任何其他PHP类(包括Propel和Doctrine支持).
CLI非常好,并且可以轻松扩展以适用于特定于应用程序的支持.一个例子是我最近开发了一个shell插件,它会自动安装我从github索引的任何其他CakePHP插件.花了大约5个小时来构建非常实用和灵活的东西.我确信Symfony存在这样的功能,并且它存在于RoR :)
至于像Rails一样,它是,它不是.很多东西都很相似,毕竟它们是MVC框架,CakePHP用于"约定与配置"方法.PHP4支持更好的语法,Symfony无疑具有PHP5支持,但它仍然非常实用和直观.该框架不提供开箱即用的Rails的每个功能,因为它不是直接克隆.CakePHP是一个框架,而不是一个库(hi Zend),所以它不会提供开箱即用的所有东西.
我同意,在CakePHP中产生一些观点有点不可思议.它在CakePHP 1.3和2.0中得到了极大的增强.它将支持每个模型,视图和控制器的自定义模板(而不是像现在这样只是一种类型的视图).此外,用户通过neilcrookes在github上存在一组shell任务,它们仅自动烘焙某些类型的视图(仅包括管理视图),这些视图可以与自定义模板结合使用以生成您想要的内容.CSS样式也有帮助:)但这肯定是可以改进的东西.
CakePHP在它的Model :: find方法中采用了许多不同的参数,尽管在某些情况下使用原始SQL查询可能很有用.Model :: find()方法非常灵活,并且在创建复杂查找时没有让我失望.我认为这与对ORM的熟悉有关,这不可避免地总是需要时间.
表单验证应该在逻辑上位于模型层中,因为这是执行与数据库相关的任何操作的地方.您可以在我认为的特定视图中指定备用验证,或者交换验证(有一种行为,但没有它就不会这么做).
多维数组有点傻,但你仍然可能有多维对象.PHP4有一个破碎的对象模型,所以这就是CakePHP不使用对象的原因.这在CakePHP的未来版本中得到了纠正(正如我在上一篇评论中所指出的那样),但在某些情况下拥有支持PHP4的框架会很有用.同样,YMMV和我同意完整的PHP5将在应用程序和开发的速度方面带来巨大的好处.
数据库可以随意交换.CakePHP不允许仅在一种类型的DB中固有的功能(因此仅在MySQL中支持ENUM),因此始终支持ORM并且始终可以构建有效的查询.您可以在应用程序中拥有多个数据库,如果需要,每个模型可以有一个数据库,并且可以随意交换它们,甚至根本不使用数据库来处理特定模型.所以不,它不依赖于特定的数据库.
最后,您的选择是您自己的,我全心全意地建议同时阅读文档,阅读论坛,IRC频道,博客和任何论坛,并查看最适合您的开发风格的框架.读者要小心,我是CakePHP的开发者,所以我的帖子有一些偏见.
除了现有答案之外,如果可能的话,你应该尝试两种方法.我使用了很多,并且在一段时间内,更喜欢symfony.
但我相信它不是因为其中一个更好,而是因为symfony恰好适合我的思维方式更好,它更接近我在框架外编写软件时所做的事情,所以感觉更直观.我希望其他人可能会发现他们的思想符合另一个框架的范例.
话虽如此,我确实认为cakephp的对象是一个弱点,通过使用数组而不是对象.(每当我需要做一些难以理解的事情时,这会在我内心周期性地发展成为一种强烈的仇恨......)他们可以完全相同,但返回对象而不是数组来表示数据,我认为大多数我遇到的问题会消失 - 您可以在数据对象中添加额外的功能来实现我想要做的事情,而不是在现有的模型类中编写函数并将它们传递给数组.
小智 6
CakePHP的模型层很乱.尝试执行类似于Item对象之间的多对多关系之类的简单操作,然后检索具有特定属性集的类别中的所有项目.
喜欢:
SELECT items.* FROM items, categories, item_categories WHERE item.available=1 AND category.id=1 AND item_categories.category_id = category.id
Run Code Online (Sandbox Code Playgroud)
使用模型的find()方法在cake中的一个语句中不可能实现微不足道的东西.
核心API中也没有办法在上面的item_category表中将一个多对多关系添加到一个项目中.网上有一些解决方案,包括有人在面包店发布的行为(http://bakery.cakephp.org/articles/view/add-delete-habtm-behavior),但这只是像Propel一样好的ORM框架的东西,Torque(Java),Hibernate(Java),SQLObject(Python),SQLAlchemy(Python)支持开箱即用.基本上你要么必须编写很多PHP代码来添加那些缺少的功能或使用原始的SQL查询,但框架的主要目的是避免做那些事情,这样你就可以专注于你所使用的应用程序了.写作,所以你并没有真正获得CakePHP.
还有很多其他问题,它们都与模型层有关,包括将表单验证绑定到模型层,必须处理凌乱的多维数组,必须使用原始sql并将应用程序绑定到特定数据库.
我会说使用symfony.这是一个更大的框架,可能需要几天的时间来学习,但这将是非常值得的.我打算将CakePHP用于我正在进行的项目,在遇到太多这类问题之后,我转而使用symfony并且顺利航行.
| 归档时间: |
|
| 查看次数: |
32341 次 |
| 最近记录: |