CakePHP自学笔记(五):Cake中的MVC开发

by AquarHEAD

AquarTutorial 第一期
-CakePHP自学笔记

(一):利用Ubuntu搭建开发环境
(二):数据库配置与连接
(三):MVC开发模式简介
(四):CakePHP的命名规范
>>(五):Cake中的MVC开发

<-<-<-<-<-<-<-<-<-<-<-<-<-

行为、组件、助手

或许你已经听过很多遍那句经典的“不要重复发明轮子”了,同样,为了提高代码重用,Cake提供了Behavior(行为)、Component(组件)、Helper(助手),分别作为Model(模型)、Controller(控制器)、View(视图)的“扩展”。说白了,就跟C的标准库一样,想使用行为、组件或助手的功能,只要声明一下就OK了。

我目前比较常用的核心组件是Auth(认证系统),助手有Form(表格)、Session(会话控制)、html(快速创建html标签)等。

使用扩展

前面说过,要使用扩展,只要在模型、控制器中声明就可以了(核心助手不用声明)。示例代码:

<?php
class ExampleController extends AppController {
	var $components = array('Auth');
} 
?>

在模型中使用行为与此类似。

有时候,像Auth认证系统这样的组件是整站都需要的,我们可以在app/app_controller.php文件中向AppController类中引入Auth,这样所有继承自AppController的控制器也都有Auth了。也就是:

<?php
class AppController extends Controller {
	var $components = array('Auth');
} 
?>

回调函数

这个名词具体是什么意思我还不很明白。跟某陈小讨论了一下,他给我两个网址(CNEN)我还没仔细看,不过wiki上那个图片是让我懂了它为什么叫这个名字,回调的意思就是主程序调用一个库函数(级别不同),而此库函数调用了一个和主程序同样级别的函数,也即“回调”。总之呢,我现在也只用一个Callback Function就是beforeFilter()。

回调函数可以用来设置一些配置选项,或者在页面跳转之前执行某些动作。

比如我用beforeFilter来设置Auth的一些参数:

function beforeFilter() {
    $this->Auth->allow('login', 'add', 'view', 'index');
    $this->Auth->loginRedirect = array('action' => 'home');
}

这里beforeFilter是控制器的回调函数,它在任何函数被执行前执行。