初品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 相关文章推荐
Linux下进行MYSQL编程时插入中文乱码的解决方案
Mar 15 PHP
shopex主机报错误请求解决方案(No such file or directory)
Dec 27 PHP
PHP加Nginx实现动态裁剪图片方案
Mar 10 PHP
PHP之autoload运行机制实例分析
Aug 28 PHP
CI框架装载器Loader.php源码分析
Nov 04 PHP
ThinkPHP中处理表单中的注意事项
Nov 22 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
Oct 20 PHP
php函数传值的引用传递注意事项分析
Jun 25 PHP
PHP多个图片压缩成ZIP的方法
Aug 18 PHP
Mac下快速搭建PHP开发环境步骤详解
May 05 PHP
php异常处理捕获错误整理
Sep 23 PHP
常见的5个PHP编码小陋习以及优化实例讲解
Feb 27 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中限制IP段访问、禁止IP提交表单的代码
2011/04/23 PHP
nginx下安装php7+php5
2016/07/31 PHP
JavaScript 工具库 Cloudgamer JavaScript Library v0.1 发布
2009/10/29 Javascript
JQuery从头学起第二讲
2010/07/04 Javascript
js对象数组按属性快速排序
2011/01/31 Javascript
javascript中的事件代理初探
2014/03/08 Javascript
jQuery淡入淡出元素让其效果更为生动
2014/09/01 Javascript
JQuery基础语法小结
2015/02/27 Javascript
js插件YprogressBar实现漂亮的进度条效果
2015/04/20 Javascript
如何给ss bash 写一个 WEB 端查看流量的页面
2017/03/23 Javascript
node使用UEditor富文本编辑器的方法实例
2017/07/11 Javascript
vue与bootstrap实现时间选择器的示例代码
2017/08/26 Javascript
zTree 树插件实现全国五级地区点击后加载的示例
2018/02/05 Javascript
vue-router的两种模式的区别
2019/05/30 Javascript
详解小程序BackgroundAudioManager踩坑之旅
2019/12/08 Javascript
[02:47]DOTA2英雄基础教程 野性怒吼兽王
2013/12/05 DOTA
[01:38]DOTA2 2015国际邀请赛中国区预选赛 Showopen
2015/06/01 DOTA
[00:20]TI9观赛名额抽取Ⅱ
2019/07/24 DOTA
Python深入学习之内存管理
2014/08/31 Python
python字符串替换的2种方法
2014/11/30 Python
使用Python写一个贪吃蛇游戏实例代码
2017/08/21 Python
python3实现二叉树的遍历与递归算法解析(小结)
2019/07/03 Python
python中sort和sorted排序的实例方法
2019/08/26 Python
python实现修改固定模式的字符串内容操作示例
2019/12/30 Python
基于html5 canvas做批改作业的小插件
2020/05/20 HTML / CSS
FOREO斐珞尔官方旗舰店:LUNA露娜洁面仪
2018/03/11 全球购物
大专自我鉴定范文
2013/10/01 职场文书
党支部书记先进事迹
2014/01/17 职场文书
活动志愿者自荐信
2014/01/27 职场文书
初一学生评语大全
2014/04/24 职场文书
小班下学期个人总结
2015/02/12 职场文书
单位车辆管理制度
2015/08/05 职场文书
初二英语教学反思
2016/02/15 职场文书
用python删除文件夹中的重复图片(图片去重)
2021/05/12 Python
Kubernetes中Deployment的升级与回滚
2022/04/01 Servers
js基于div丝滑实现贝塞尔曲线
2022/09/23 Javascript