初品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 相关文章推荐
基于mysql的论坛(6)
Oct 09 PHP
oracle资料库函式库
Oct 09 PHP
不错的一篇面向对象的PHP开发模式(简写版)
Mar 15 PHP
一个基于phpQuery的php通用采集类分享
Apr 09 PHP
php计算两个日期相差天数的方法
Mar 14 PHP
PHP限制HTML内容中图片必须是本站的方法
Jun 16 PHP
jQuery+Ajax+PHP“喜欢”评级功能实现代码
Oct 08 PHP
PHP重定向与伪静态区别
Feb 19 PHP
详解PHP 二维数组排序保持键名不变
Mar 06 PHP
Laravel框架模型的创建及模型对数据操作示例
May 07 PHP
解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题
Oct 16 PHP
PHP的new static和new self的区别与使用
Nov 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过滤HTML标签、属性等正则表达式汇总
2014/09/22 PHP
基于PHP实现简单的随机抽奖小程序
2016/01/05 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
IE本地存储userdata的一个bug说明
2010/07/01 Javascript
Pro JavaScript Techniques学习笔记
2010/12/28 Javascript
js交换排序 冒泡排序算法(Javascript版)
2014/10/04 Javascript
在JavaScript中用getMinutes()方法返回指定的分时刻
2015/06/10 Javascript
jquery解析json格式数据的方法(对象、字符串)
2015/11/24 Javascript
JavaScript ES6中CLASS的使用详解
2016/11/22 Javascript
jquery仿微信聊天界面
2017/05/06 jQuery
详解VueJS 数据驱动和依赖追踪分析
2017/07/26 Javascript
详解用Node.js实现Restful风格webservice
2017/09/29 Javascript
使用react实现手机号的数据同步显示功能的示例代码
2018/04/03 Javascript
解决layui前端框架 form表单,table表等内置控件不显示的问题
2018/08/19 Javascript
vue2中引用及使用 better-scroll的方法详解
2018/11/15 Javascript
js使用cookie实现记住用户名功能示例
2019/06/13 Javascript
js设置鼠标悬停改变背景色实现详解
2019/06/26 Javascript
微信小程序wxs实现吸顶效果
2020/01/08 Javascript
vue select 获取value和lable操作
2020/08/28 Javascript
ant-design-vue中的select选择器,对输入值的进行筛选操作
2020/10/24 Javascript
微信小程序实现多张图片上传功能
2020/11/18 Javascript
[02:24]DOTA2痛苦女王 英雄基础教程
2013/11/26 DOTA
[01:46]2020完美世界全国高校联赛秋季赛报名开启
2020/10/15 DOTA
Python开发微信公众平台的方法详解【基于weixin-knife】
2017/07/08 Python
Django项目中实现使用qq第三方登录功能
2019/08/13 Python
Python 50行爬虫抓取并处理图灵书目过程详解
2019/09/20 Python
Python 程序报错崩溃后如何倒回到崩溃的位置(推荐)
2020/06/23 Python
python 实现一个简单的线性回归案例
2020/12/17 Python
Python利用socket模块开发简单的端口扫描工具的实现
2021/01/27 Python
意大利网上购书网站:Libraccio.it
2021/02/03 全球购物
实习护理工作自我评价
2013/09/25 职场文书
大学生应聘自荐信
2013/10/11 职场文书
农民致富事迹材料
2014/01/23 职场文书
购房委托书范本
2014/09/18 职场文书
铁路安全反思材料
2014/12/24 职场文书
2016年寒假见闻
2015/10/10 职场文书