新学 CakePHP

 author: 大金 05/2006

CakePHP 初始安装截图

CakePHP 带数据库图

 CakePHP 初始运行图

 Bake 工具执行图

Blog 应用运行图 


Cake 及 Rails

"Rails 是用 Ruby (语言)编写的完整的 (full-stack) 开源的 Web 框架, 让人们快乐地开发实际的应用, 同时相比大多数框架, 做较少的 XML 配置."

"Cake 是 PHP 的一个快速开发框架, 使用了知名的设计模式, 像 ActiveRecord, Association Data Mapping (关联数据映射), Front Controller (前台控制器) 和 MVC. 主要目标是提供一个结构化的框架, 使得所有不同层次的 PHP 用户都能快速开发健壮的 Web 应用而不丧失任何灵活性."

考 "CakePHP 品味" | "CakePHP 脚手架" 了解 MVC 的概念, Cake 的目录结构, 以及脚手架搭建 Blog 例子(下面是详细步骤)

神奇: "一段 sql 脚本, 两次命令, 三行代码" 就做出一个数据库后台的 Web 应用系统

> 搭建开发环境

  • 搭建 Windows 的 php 环境, 比如解压 xampp-win32-1.5.x.exe 在 C:\ 下, (C:\xampp\ 下包括 PHP, Apache, MySQL 等)
  • 搭建 CakePHP 环境, 比如解压 cake_1.0.x.x.tar.bz2 在 Web 主目录 C:\xampp\htdocs\ 下; 我决定应用系统放在 mycake 目录下, 就把子目录名 cake_1.0.x.x 改为 mycake
  • 测试如 CakePHP 初始安装截图, 注意关闭 IIS 防止端口 80 的冲突, 用 xampp-control.exe 启动 Apache, MySQL

> 设置

  • 修改 xampp/htdocs/mycake/app/config 下文件名 database.php.default 为 database.php 并修改里面的数据库连接设置的变量 $default  (见范例, 当然 MySQL 里应建立有相应的用户, 权限和数据库. 测试通过如 CakePHP 带数据库图)
  • 修改文件 xampp/apache/conf/httpd.conf 里面, 解除 mod_rewrite 的注释符; 并对 <Directory "/xampp/htdocs"> 一节, 设置 AllowOverride 为 All 而不是 None (测试如 CakePHP 初始运行图) (注意要重启 Apache)
  • 设置 Windows 环境变量 PATH 包含路径 C:\xampp\php (注意要用分号 ; 与其他路径值分开), 以便于下面的代码生成工具 Bake.php 使用 C:\xampp\php\php.exe 

> 一段 sql 脚本: (参见上面的 "CakePHP 脚手架")

> 两次命令: 产生(基础)代码(参见 Bake 工具执行图) (纪念 CakePHP 1.0 之前 Bake 工具的界面!)

  1. 打开命令行窗口, 且当前目录(改)为 C:\xampp\htdocs\mycake\cake\scripts (这里有快速打开命令行窗口的方法). 并键入命令 php bake.php 根据菜单输入 m 创建模型类(Model). 如果能正常连上数据库表, 会列出相应的模型类名. 这里, 就选 1 随后其他问题都选 n 除了问题 Look okey? (y/n) 要选 y
  2. 再次键入命令 php bake.php 根据菜单输入 c 创建控制类(Controller). 这里, 需输入 posts 随后其他问题都选 n 除了问题 Look okey? (y/n) 要选 y
  3. (可选) 说明: 类似可创建视图类(View), 但这里使用脚手架(scaffold)了. 否则, 上面创建控制类时要允许产生其 index(), add(), view(), edit() 等基本方法的代码

> 三行代码: (参见上面的 "CakePHP 脚手架")

  • 在 app/models/post.php 的 Post 模型类里确认有代码 var $name = 'Post';
  • 在 app/controllers/posts_controller.php 的 PostsController 控制类里确认有代码 var $name = 'Posts';var $scaffold; (解除其注释符)

> 打开 http://localhost/mycake/posts (参见 Blog 应用运行图) (参见没有用 scaffold 的 Blog 应用运行图)

下一步

以了解没有用脚手架 scaffold 的 Blog 应用的视图, 代码在 app/views/posts 目录里, 理解并试着改动其视图的代码