本文共 3710 字,大约阅读时间需要 12 分钟。
app/config/database.php 这个文件包含了所有的数据库配置。新安装的Cake是没有datebase.php这个文件的,你需要从database.php.default复制一份过来并重新命名,内容如下:
关于前缀要提醒一下:这里定义的前缀将会用在任何一处由Cake发起的对数据表的SQL操作中。你在这里定义过后不能再在其它地方重新定义它。假设你的服务器只给了你一个单独的database,它同样可以让你遵循Cake的表名约定。注意:对于HABTM(has-and-belongs-to-many),也就是多对多关联表,你只需要添加一次前缀prefix_apples_bananas,而不是prefix_apples_prefix_bananas。
CakePHP支持下列数据库驱动:
$default连接中的'connect'可以指定这个连接是否是persistent连接。参考database.php.default中的注释来决定采用何种方式。
Rails两大原则之一,就是约定大于配置,所以你定义的数据表名必须遵循下面的命名约定:
1. 表名为英语单词的复数形式,例如"users", "authors"或者"articles"。注意与之对应的model对象则使用单数形式做名字。 2. 表字段必须有一个主键字段叫'id'。(相信用过ORM工具的都明白个中道理吧) 3. 如果你使用外键关联表,外键字段必须定义成这个样子:'article_id'。即关联表名的单数形式加上下划线然后id。其实也很好理解,并不需要特别记忆吧。 4. 如果你定义了 'created' 'modified'这样的auditor字段的话,Cake会自动在操作的时候去填充。(译注:rails果然周全,hibernate里面的interceptor就那么容易的做到了)
你应该注意到,同样的还有一个$test的数据库连接配置项,这是考虑到一般开发数据库和生产数据库通常并不是同一个,所以你可以在程序通过var $useDbConfig = 'test'来切换数据库连接设置。
在你的model对象中,你可以通过这样的方式来添加任意多个附加数据库连接。
CakePHP的全局配置文件为/app/config/core.php。尽管我们非常讨厌配置文件,但是还是有些配置需要去做。文件中的注释对每一个配置项都有很详尽的说明。
DEBUG:这个选项定义了应用程序的Debug级别。设置为一个非零的数值Cake会输出所有的pr()和debug()函数调用,并且在Forward之前会有提示信息。设置为2或者是更高的数值,则会在页面底部输出sql语句。
CAKE_SESSION_COOKIE: 这个设置可以设定你所希望使用的cookie名字。
CAKE_SECURITY:改变这个值标示了你所希望采用Session校验级别。Cake会根据你设定的值来执行Session超时,生成新的session id,删除历史session file等操作。可以选择的值如下所示:
1. high:最高安全级别,10分钟没有活动的session被置为超时,同时每一次请求都将生成新的session id 2. medium: 20分钟没有活动的session会被置为超时 3. low: 30分钟没有活动的session会被置为超时
CAKE_SESSION_SAVE:设置你的session数据储存策略:
1. cake:Session被保存在Cake安装目录下的tmp目录 2. php: Session被保存在php.ini文件设置的储存路径下 3. database: Session保存在$default数据库连接所指定的库中
"Routing"是一个纯PHP,类似mod_rewrite的机制,来实现URL和controller/action/params的自动映射。通过这个机制Cake可以拥有简洁且可配置的URL并且可以摆脱对mod_rewrite的依赖。当然使用mod_rewrite会让你的浏览器地址栏变得更加简洁。
Routes(路由)是独立的URL和指定的controller和action映射规则。路由规则在app/config/routes.php里面配置。示例如下:
第一个参数之后的所有参数作为parameters被传递到action。
下面是一个简单的示例,所有的url都被定向到BlogController。默认的action为BlogController::index()。
然后我在controller中构建代码如下:
Cake的命名约束真的是非常不错,你可以命名model为Box,controller为Boxes,于是所有的问题都解决了。但是考虑到有的情况下(特别是非英语国家)这样的命名约束不如你意的话,你可以通过自定义反射配置来满足你的需求。
/app/config/inflections.php,这里定义了Cake的一些变量,你可以来调整名字单复数约定等。你需要详细阅读文件中的注释,并且最好具备正则表达式知识,否则请误随便修改该配置文件。
转载地址:http://zxqdi.baihongyu.com/