配置CakePHP

Section 1 数据库配置

app/config/database.php 这个文件包含了所有的数据库配置。新安装的Cake是没有datebase.php这个文件的,你需要从database.php.default复制一份过来并重新命名,内容如下:

  1. app/config/database.php  
  2. var $default array('driver'   => 'mysql' 
  3.                      'connect'  => 'mysql_connect' 
  4.                      'host'     => 'localhost' 
  5.                      'login'    => 'user' 
  6.                      'password' => 'password' 
  7.                      'database' => 'project_name' 
  8.                      'prefix'   => '');  
  9.   
  10. 和大多数php程序一样,修改一下你的配置就ok了。  
  11.           

关于前缀要提醒一下:这里定义的前缀将会用在任何一处由Cake发起的对数据表的SQL操作中。你在这里定义过后不能再在其它地方重新定义它。假设你的服务器只给了你一个单独的database,它同样可以让你遵循Cake的表名约定。注意:对于HABTM(has-and-belongs-to-many),也就是多对多关联表,你只需要添加一次前缀prefix_apples_bananas,而不是prefix_apples_prefix_bananas。

CakePHP支持下列数据库驱动:

  • mysql
  • postgres
  • sqlite
  • pear-drivername (so you might enter pear-mysql, for example)
  • adodb-drivername

$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对象中,你可以通过这样的方式来添加任意多个附加数据库连接。

Section 2 全局配置

CakePHP的全局配置文件为/app/config/core.php。尽管我们非常讨厌配置文件,但是还是有些配置需要去做。文件中的注释对每一个配置项都有很详尽的说明。

DEBUG:这个选项定义了应用程序的Debug级别。设置为一个非零的数值Cake会输出所有的pr()和debug()函数调用,并且在Forward之前会有提示信息。设置为2或者是更高的数值,则会在页面底部输出sql语句。 
在debug模式下(DEBUG被设为1或者更高),Cake会输出错误自定义错误页面,例如 "Missing Controller","Missing Action"等等。在生产环境下(DEBUG被设为0),Cake输出 "Not Found"页面,你可以自行修改该页面(app/views/errors/error404.thtml)。 

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数据库连接所指定的库中
                
Section 3 路由(Route)配置

"Routing"是一个纯PHP,类似mod_rewrite的机制,来实现URL和controller/action/params的自动映射。通过这个机制Cake可以拥有简洁且可配置的URL并且可以摆脱对mod_rewrite的依赖。当然使用mod_rewrite会让你的浏览器地址栏变得更加简洁。

Routes(路由)是独立的URL和指定的controller和action映射规则。路由规则在app/config/routes.php里面配置。示例如下:

  1. Route Pattern  
  2. <?php  
  3. $Route->connect  
  4.     'URL' 
  5.     array('controller'=>'controllername' 
  6.     'action'=>'actionname''firstparam' 
  7. );  
  8. ?>  
  9.   
  10.   
  11.    1.  
  12.       URL是一个正则表达式,表示你希望采用的URL格式  
  13.    2.  
  14.       controllername是希望调用的controller的名字  
  15.         
  16.    3.  
  17.       actionname是希望调用的controller的action名字  
  18.         
  19.    4.  
  20.       firstparam是action的第一个参数名  
  21.           

第一个参数之后的所有参数作为parameters被传递到action。

下面是一个简单的示例,所有的url都被定向到BlogController。默认的action为BlogController::index()。

  1. Route Example  
  2. <?php  
  3. $Route->connect ('/blog/:action  
  4.     define('WEBSERVICES''on');  
  5.       

然后我在controller中构建代码如下:

  1. <?php  
  2. class PhonesController extends AppController  
  3.  
  4.     function doWhosOnline()  
  5.      
  6.         // this action is where we do all the work of seeing who's on the phone...  
  7.   
  8.         // If wanted this action to be available via Cake's xml webservices route,  
  9.         // I'd need to include view at /app/views/posts/xml/do_whos_online.thtml.  
  10.         // Note: the default view used here is at /app/views/layouts/xml/default.thtml.  
  11.   
  12.         // If user requests /phones/doWhosOnline, they will get an HTML version.  
  13.         // If user requests /xml/phones/doWhosOnline, they will get the XML version.  
  14.      
  15.  
  16. ?>  
  17.           
Section 5 自定义反射配置(可选)

Cake的命名约束真的是非常不错,你可以命名model为Box,controller为Boxes,于是所有的问题都解决了。但是考虑到有的情况下(特别是非英语国家)这样的命名约束不如你意的话,你可以通过自定义反射配置来满足你的需求。

/app/config/inflections.php,这里定义了Cake的一些变量,你可以来调整名字单复数约定等。你需要详细阅读文件中的注释,并且最好具备正则表达式知识,否则请误随便修改该配置文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值