很多语言或者框架入门的第一个演示程序,就是Hello world。
但我并不打算这么做,这里以创建一个简单的Blog程序为例。
CakePHP 是一个以数据库主导设计的框架,所以,我们首先要创建相应的表。
在数据库cakeblog 中创建一个名为posts的表,创建语句如下。
CREATE TABLE `posts` (
`id` int(11) NOT NULL auto_increment,
`content` text NOT NULL,
`created` date default NULL,
`modified` date default NULL,
`author` varchar(100) NOT NULL,
`name` varchar(100) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB
你可以使用MySQL客户端工具来创建,也可以使用NetBeans 的数据库工具来完成。
创建model。
在cakeblog 项目结点,选择app/models。
右键点击models ,选择File->new File 。
在对话框中,Categories 中选择PHP, File Types 中选择PHP Class 。
点击Next 进入下一步, 在Name and Location 中输入下面内容。
Name:post.php
Project:cakeblog
Folder ,选择app/models
点击Finish 完成操作。
在文件中输入收下内容。
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
class Post extends AppModel{
var $name='Post';
}
?>
类Post 继承 AppModel,它与数据库的表posts对应,文件中还指定了一个属性$name。
在CakePHP约定,数据表名以复数小写出现。而相应的Model 的文件名单数小写app/models/post.php,类名是单数首字母大写,遵循CamelCase 原则。如果是多个单词组成,则表名和文件都以下划线隔开。
如表为blog_posts,model的文件名为blog_post.php,类名为BlogPost。
第一次看起来真有点头晕。
创建Controller 。
按上面的方法在app/controllers中创建一个PHP类,名为posts_controller.php。
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
class PostsController extends AppController{
var $name='Posts';
}
?>
在CakePHP中约定,一个controller
文件是以_controller.php结尾。类名以Controller结尾,也遵循CamelCase原则。一般情况下一个Controller
依赖相应的model,这里,PostsController依赖Post这个Model。注意,这里文件名和类名都使用了复数。如果想在使用其它
model,可在controller 中指定属性var
$uses=array('Post','Comment');,通过一个数组指定其它model。
在Controller 中,一个function 对应一个action 。
创建第一个 action 方法。
function index() {
$this->set("msg","Hello CakePHP");
}
创建view 。
在app/views下新建一个posts目录,在下面新建一个index.ctp模板文件。CakePHP 模板文件使用的是标准的php script,不需要学习额外的技术。
index.ctp 文件内容如下。
在CakePHP中约定,一个Controller 所对应的View 文件都放在Controller 名称(小写)的目录中,每个view 文件的文件名都是Controller 的方法名,扩展名为ctp 。
打开浏览器,输入地址http://localhost/cakeblog/posts/index,就可以看到Hello CakePHP信息了。
我们看一下请求的url,localhost是域名,cakeblog是应用程序名(这里是项目名称一致),posts是Controller的名
称,CakePHP的内置的dispatcher 会找到相应的Controller类,即PostsController
,index是posts对应的action。
阅读(2245) | 评论(0) | 转发(0) |