初品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 相关文章推荐
PHP操作MongoDB时的整数问题及对策说明
May 02 PHP
通过5个php实例细致说明传值与传引用的区别
Aug 08 PHP
Thinkphp中volist标签mod控制一定记录的换行BUG解决方法
Nov 04 PHP
php站内搜索关键词变亮的实现方法
Dec 30 PHP
php获取客户端电脑屏幕参数的方法
Jan 09 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
Mar 05 PHP
php通过淘宝API查询IP地址归属等信息
Dec 25 PHP
Ajax提交表单时验证码自动验证 php后端验证码检测
Jul 20 PHP
Yii 2.0实现联表查询加搜索分页的方法示例
Aug 02 PHP
PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例
Jun 17 PHP
Laravel 对某一列进行筛选然后求和sum()的例子
Oct 10 PHP
PHP框架实现WebSocket在线聊天通讯系统
Nov 21 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打造属于自己的MVC框架
2012/03/07 PHP
PHP获取当前完整URL地址的函数
2014/12/21 PHP
PHP互换两个变量值的方法(不用第三变量)
2016/11/14 PHP
js正确获取元素样式详解
2009/08/07 Javascript
JS延迟加载(setTimeout) JS最后加载
2010/07/15 Javascript
客户端js性能优化小技巧整理
2013/11/05 Javascript
js实现鼠标滚轮控制图片缩放效果的方法
2015/02/20 Javascript
JS实现横向拉伸动感伸缩菜单效果代码
2015/09/04 Javascript
Three.js基础部分学习
2017/01/08 Javascript
slideToggle+slideup实现手机端折叠菜单效果
2017/05/25 Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
2017/10/26 Javascript
基于Vue的SPA动态修改页面title的方法(推荐)
2018/01/02 Javascript
vue实现登录后页面跳转到之前页面
2018/01/07 Javascript
vue实现点击展开点击收起效果
2018/04/27 Javascript
微信小程序实现多个按钮的颜色状态转换
2019/02/15 Javascript
vue data对象重新赋值无效(未更改)的解决方式
2020/07/24 Javascript
vue+element-ui JYAdmin后台管理系统模板解析
2020/07/28 Javascript
[02:38]2018DOTA2亚洲邀请赛赛前采访-VGJ.T
2018/04/03 DOTA
浅谈Python数据类型之间的转换
2016/06/08 Python
python入门基础之用户输入与模块初认识
2016/11/14 Python
Python设计模式之策略模式实例详解
2019/01/21 Python
python实现两个经纬度点之间的距离和方位角的方法
2019/07/05 Python
Python学习笔记之lambda表达式用法详解
2019/08/08 Python
CSS3中的常用选择器使用示例整理
2016/06/13 HTML / CSS
美国领先的机场停车聚合商:Airport Parking Reservations
2020/02/28 全球购物
为什么需要版本控制
2016/10/28 面试题
董事长秘书职责
2014/01/31 职场文书
聊城大学毕业生自荐书
2014/02/01 职场文书
毕业生自荐信如何写
2014/03/24 职场文书
军训拉歌口号
2014/06/13 职场文书
高中课前三分钟演讲稿
2014/09/13 职场文书
张思德观后感
2015/06/09 职场文书
团支部书记竞选稿
2015/11/21 职场文书
python源码剖析之PyObject详解
2021/05/18 Python
Python访问Redis的详细操作
2021/06/26 Python
SQL实战演练之网上商城数据库商品类别数据操作
2021/10/24 MySQL