初品cakephp 入门基础


Posted in PHP onFebruary 16, 2012

初品cakephp 入门基础
首先来看一下cakephp的的执行流程(从百度百科借来的图片):
1:首先你的服务器必须支持rewrite,如果是不支持rewrite的虚拟主机的话cakephp是不能正常运行的。
2:将所有的请求定向到cakephp框架后就进入了框架的route,cakephp带有一套默认的分发规则(例如:http://……/test/test,在不做任何route配置的情况下cakephp会自动执行test_controller控制器中的test方法)。
我们可以通过配置route的方式将任何请求指向我们所希望执行的控制器和方法,配置如下(app/config/routes.php):

Router::connect('/pages/*', array('controller' => 'test', 'action' => 'index'));

3:请求进入controller后cakephp会根据controller的名字去加载默认的model。例如:TestController会自动加载models下的test.php文件,接着我们就可以通过如下方法调用该model的方法了。
$this->test->find('all');

查看cakephp框架的controller基类源码(cake\libs\controller\controller.php的__mergeVars方法中)
if ($this->uses !== null && $this->uses !== false) { 
$merge[] = 'uses'; 
} 
foreach ($merge as $var) { 
if (isset($appVars[$var]) && !empty($appVars[$var]) && is_array($this->{$var})) { 
if ($var !== 'uses') { 
$normal = Set::normalize($this->{$var}); 
$app = Set::normalize($appVars[$var]); 
if ($app !== $normal) { 
$this->{$var} = Set::merge($app, $normal); 
} 
} else { 
$this->{$var} = array_merge($this->{$var}, array_diff($appVars[$var], $this->{$var})); 
} 
} 
}

在cakephp构造controller的时候将uses数组中的model会全部实例化。
4、5、6:是controller和model直接处理业务逻辑的一个过程,值得注意的是cakephp的model继承自AppModel,在AppModel中已经实现了一些数据库的操作方法,并且model会默认关联到数据库中的表。这一点感觉不是很好,model只是一个数据库的操作层了。
7:在进行完业务处理后,最终要数据要整合html输出到浏览器端。在cakephp的视图中包含布局文件、元素文件和模板文件,这些文件的在1.3版本中采用ctp的后缀,在controller基类里面可以修改var $ext = '.ctp';来改变模板文件的后缀。
小结:cakephp框架使用起来感觉不够灵活,model层存在局限性。而视图文件中采用的是php的语法不便于团队开发中的任务分离。在小项目中cakephp还是游刃有余的,框架提供的脚手架、核心组件和一些类可以快速方便的构建一个项目。cakephp初识,认识可能存在偏差。
PHP 相关文章推荐
第四节 构造函数和析构函数 [4]
Oct 09 PHP
BBS(php & mysql)完整版(六)
Oct 09 PHP
PHP中的类-什么叫类
Nov 20 PHP
PHP导入Excel到MySQL的方法
Apr 23 PHP
LotusPhp笔记之:Cookie组件的使用详解
May 06 PHP
显示程序执行时间php函数代码
Aug 29 PHP
PHP实现Soap通讯的方法
Nov 03 PHP
php实现无限级分类
Dec 24 PHP
前端必学之PHP语法基础
Jan 01 PHP
Laravel的throttle中间件失效问题解决方法
Oct 09 PHP
PHP实现生成数据字典功能示例
May 24 PHP
ThinkPHP实现的rsa非对称加密类示例
May 29 PHP
php线性表顺序存储实现代码(增删查改)
Feb 16 #PHP
用PHP实现Ftp用户的在线管理
Feb 16 #PHP
PHP排序算法的复习和总结
Feb 15 #PHP
php网上商城购物车设计代码分享
Feb 15 #PHP
php后台多用户权限组思路与实现程序代码分享
Feb 13 #PHP
php _autoload自动加载类与机制分析
Feb 10 #PHP
php 文本文件的读取效率
Feb 10 #PHP
You might like
利用PHP扩展vld查看PHP opcode操作步骤
2013/03/04 PHP
PHP面向对象编程之深入理解方法重载与方法覆盖(多态)
2015/12/24 PHP
yii2中关于加密解密的那些事儿
2018/06/12 PHP
Laravel用户授权系统的使用方法示例
2018/09/16 PHP
JS 两个字符串时间的天数差计算
2013/08/25 Javascript
js实现的常用的左侧导航效果
2013/10/17 Javascript
借助JavaScript脚本判断浏览器Flash Player信息的方法
2014/07/09 Javascript
浅谈Javascript的静态属性和原型属性
2015/05/07 Javascript
JavaScript原生xmlHttp与jquery的ajax方法json数据格式实例
2015/12/04 Javascript
实例讲解javascript注册事件处理函数
2016/01/09 Javascript
JavaScript设计模式经典之工厂模式
2016/02/24 Javascript
基于JavaScript实现轮播图代码
2016/07/14 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
2016/09/01 Javascript
nodejs连接mysql数据库简单封装示例-mysql模块
2017/04/10 NodeJs
JS 验证密码 不能为空,必须含有数字、字母、特殊字符,长度在8-12位
2017/06/21 Javascript
代码详解Vuejs响应式原理
2017/12/20 Javascript
vue生成文件本地打开查看效果的实例
2018/09/06 Javascript
Next.js项目实战踩坑指南(笔记)
2018/11/29 Javascript
小程序实现投票进度条
2019/11/20 Javascript
JavaScript 自定义html元素鼠标右键菜单功能
2019/12/02 Javascript
基于Cesium绘制抛物弧线
2020/11/18 Javascript
python实现机器人行走效果
2018/01/29 Python
Django用户认证系统 Web请求中的认证解析
2019/08/02 Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
2020/02/26 Python
150行python代码实现贪吃蛇游戏
2020/04/24 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
2020/06/08 Python
python else语句在循环中的运用详解
2020/07/06 Python
如何使用Cython对python代码进行加密
2020/07/08 Python
PyTorch实现重写/改写Dataset并载入Dataloader
2020/07/14 Python
pycharm-professional-2020.1下载与激活的教程
2020/09/21 Python
Python高并发和多线程有什么关系
2020/11/14 Python
2014大学生职业生涯规划书最新范文
2014/09/13 职场文书
材料员岗位职责范本
2015/04/11 职场文书
2015小学教师年度工作总结
2015/05/12 职场文书
小学英语课教学反思
2016/02/15 职场文书
redis实现共同好友的思路详解
2021/05/26 Redis