CakePHP version 0.10.0.1217_alpha Released!

Posted on 27th October 2005 by Nio in CakePHP, 程序人生

这个版本的 Cake 有了不少修改,需要修改模块变量名等等,具体关键的修改如下:1. New Model References
Any instance of a model should be referenced as CamelCase.
(old) $this->models['post']->findAll()
(new) $this->Post->findAll().

2. Association References
Associated data is returned in ModelName array now.

(old) $data['modelname']['id'];
(new) $data['ModelName']['id'];

3. CamelCased models with associations:
All Associations should be singular CamelCased, since we are associating models.

var $belongTo = 'SomeOtherModel,SomeOtherModel1';
var $hasOne = 'SomeOtherModel,SomeOtherModel1';
var $hasMany = 'SomeOtherModel,SomeOtherModel1';
var $hasAndBelongsToMany = 'SomeOtherModel,SomeOtherModel1';

For more information on associations:
http://wiki.cakephp.org/docs:understanding_associations

4. Table underscores:
If you CamelCase your models to replicate your database tables.
The table names and URLs to the controller will be automatically underscored on PHP5.
On PHP4 set your controller (var $name ='Posts') and model (var $name = 'Post')
Adding var $useTable = 'my_underscore_table'; to your model can also be used if
your table name is different from your model name.

5. CamelCase on helpers and components.

var $components = array('ComponentName');
accessing components in the controller is CamelCased
$this->ComponentName->method()

var $helpers = array('Html','HelperName');
accessing helpers in the view is camelBacked
$helperName->method()

6. Update to database.php.default
You must now set connection type.
The port is optional同时我也更新了 Cake AJAX Blog Demo,使可以在最新的版本 Cake_0.10.0.1217_alpha 下运行。

12 Comments »

  1. 很早前就开始关心CakePHP了。目前我正在用Smarty+Smarty Validate+Xajax来开发程序。感觉不太顺利,xajax library有许多bug,甚至连最基本的form value的传递也有些问题。

    但是我还是有些惧怕使用CakePHP。最重要的是CakePHP目前为止还是没有一个系统的、完整的documentation。因为我这个project即是给自己做的,同时也要当作学校的作业交上去,所以时间很紧。如果还需要一行行的看代码的话,恐怕……

    另外不知道CakePHP是打算完全照着RoR走,还是在RoR的基础上做自己的风格呢?目前PHP的framework很多,但即容易使用,又功能强大的并不多。难道要等Zend的还在酝酿中的“官方”framework吗… >.<

    仍然会持续关注CakePHP。:)

    Comment by 沧蓝 — October 30, 2005 @ 1:09 am

  2. 目前 CakePHP 还不完善,文档方面已经开始写了,并不打算完全跟着 ROR 走,他有自己的目标,但个人感觉目前的可复用性还是差些,如果你现在要用的话,还是先不要选择 Cake 了,因为有可能目录结构都会经常改变,到时升级都很麻烦 ;)

    Comment by Nio — October 31, 2005 @ 10:32 am

  3. 谢谢你的回复,那您认为现阶段用什么来协助开发比较有效呢?我倒是不太想再用Smarty了,希望可以有一个比较系统的framework可以用。

    真是奇怪,Python有Django,Ruby有Rails,唯独PHP却没有一个像样的framework… :(

    Comment by 沧蓝 — October 31, 2005 @ 6:46 pm

  4. Smarty 作为 VIEW 而言似乎有些过大了,实际上 VIEW 不只包括 template,还需要很多 helper 来辅助完成一些东西,包括一些 AJAX Helper,而其 validation 也有些笨拙,或者说有些难用,其实现在越来越觉得 Savant (phpsavant.com) 的思想是很有道理的,既然 PHP 已经是一种模板语言了,为什么我们还需要在这之上再增加一层 Smarty 或其他语法的模板来增加编码的复杂度呢?其实 Struts 有很多可以值得学习,在这里头,validation 可以配置,甚至很多处理过程都可以配置使用自己写的类,给了很多自定义的空间。目前的 Cake 等基本都是把开发者过于限制于框架之中了,其实在简单之上,还是应该留有一些可复杂化应用空间的,那样的话就很理想了。在没有找到好的框架之前,其实我们可以自己进行一些尝试,编写自己应用的框架,虽然麻烦一些,但至少出了问题之后自己知道可能会是哪里的问题,同时学习各种框架的优缺点,不断地重构自己的框架,相信也会很不错,至少在自己的项目中会很得心应手,而且对于自身也是一种锻炼 :)

    Comment by Nio — October 31, 2005 @ 9:51 pm

  5. 你说的很有道理,不过,作为RAD (Rapid Application Development)的理念,不就是要减少“不必要”的coding,从而获取更多时间来思考和设计logic吗?:)

    我昨天看了看CakePHP的文档,发现实在是太不完善了,必须要直接看源代码才能理解。

    我现在打算索性先搁置PHP了,直接看Ruby和RoR。还没打算会不会用RoR来开发但是我想至少通过学习RoR,可以让自己更好的认识到一些比较“先进”的开发思想,至少如果以后需要自己开发一个比较系统的homegrow framework,也好有个基本的设计理念。:)

    Comment by 沧蓝 — November 1, 2005 @ 7:21 pm

  6. RAD 的意义确实如此,但 RAD 不能剥夺开发者自由定制及复用空间,简单的应用可以很快解决,而有一些应用会比较负责,这个时候 RAD 应该能够有应付这类应用的能力。不完善的框架会让 logic 的设计变得困难,甚至很难复用。
    其实不管是 RoR 还是 Cake,建议你了解一下 Active Record 设计模式,会有很大的帮助。祝你好运!

    Comment by Nio — November 1, 2005 @ 8:57 pm

  7. 1. template
    smarty实在不好用, php本身就是一种优秀的view技术了. 所以不需要其他的view技术来解决了. 所以根本不需要像其他语言一样.
    2. ror太过上层.
    3. php嘛. 现在几乎没有框架可以解决重复劳动问题. cake的封装性很好. 但用cake开发的东西离开了cake就什么都不是了. 所以除非100%必须. 否则我是肯定不会选择的.

    Comment by Binzy — November 1, 2005 @ 11:35 pm

  8. Hi, Nio. 谢谢你的建议,其实最近几天我就在看RoR的一些特行了,包括scaffording和Active Record等。这些设计理念都非常赞。我想我会好好的深入了解一下的。:)

    Comment by 沧蓝 — November 2, 2005 @ 9:37 pm

  9. Nio,
    你有对 symfony-project.com 研究么?

    Comment by Yanni.Zheng — November 3, 2005 @ 5:44 pm

  10. symfony 也和 Rail 类似,最近 cake group 上也有人提到过。它使用 propel & creole 做数据库对象关系映射及数据库抽象层,之前我在 blog 中介绍过 propel,也使用过,感觉一般,可能是实现上不算优秀的原因吧,O/R Mapper 和 Cake/RoR 使用的 Active Record 有比较大的区别,O/R Mapper 可以很好地分离领域(Domain)与数据源(Database),而 Active Record 则是将数据库操作和一些领域逻辑混在一起了。前者使用起来可能会复杂些,至少 peopel 比较复杂,但用好了也可以一本万利,就是前期工作比较烦,而后者则是给予了很多现成的业务逻辑可以使用,也相对简单,对于中小型项目,如果着重快速编程的话,个人觉得后者比较合适一些。正如 Binzy 所说,Cake/RoR 都过于上层了,在一定程度上可以满足项目快速编程的需要,因为他们概括实现出一些经常使用的逻辑,但对于大型项目就不合适了,因为大型项目的领域逻辑往往过于复杂,并不仅仅是 CRUD 那么简单,所以使用 Active Record 就会有些力不从心了。这只是我个人的看法,不一定正确 ;)

    Comment by Nio — November 3, 2005 @ 8:52 pm

  11. 呵呵,今天从google搜索propel creole东东,居然搜回到这你这里又….:))

    我对这些propel & creole 看得不多,最近看symfony,所以看到了这些ORM,database abstraction layer,不过跟我的想法类似,Cake做小型的系统比较适合,作EE的还是symfony这样的更好些,不过symfony好复杂啊。安装就狂晕,当然我是在win上配置环境的。呵呵。

    Comment by Yanni.Zheng — November 8, 2005 @ 4:47 pm

  12. 老大千万先帮帮我,我下了近4000首,可是在今天下午(11月14日)少了一大部分,只剩755首了,5555555555
    千万帮帮我,那是我的汗呀
    我的QQ4629087
    先谢谢呀

    Comment by 程海龙 — November 14, 2005 @ 6:09 pm

Leave a comment