初品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 相关文章推荐
phpwind中的数据库操作类
Jan 02 PHP
PHP 裁剪图片成固定大小代码方法
Sep 09 PHP
zf框架的Filter过滤器使用示例
Mar 13 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
Jun 19 PHP
PHP实现绘制3D扇形统计图及图片缩放实例
Oct 01 PHP
PHP基于CURL进行POST数据上传实例
Nov 10 PHP
thinkPHP3.1验证码的简单实现方法
Apr 22 PHP
php变量与数组相互转换的方法(extract与compact)
Dec 02 PHP
php实现多站点共用session实现单点登录的方法详解
Sep 18 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
Mar 26 PHP
PHP实现页面静态化深入讲解
Mar 04 PHP
PHP实现rar解压读取扩展包小结
Jun 03 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
header跳转和include包含问题详解
2012/09/08 PHP
PHP获取和操作配置文件php.ini的几个函数介绍
2013/06/24 PHP
php验证是否是md5编码的简单代码
2014/04/01 PHP
PHP+iFrame实现页面无需刷新的异步文件上传
2014/09/16 PHP
在WordPress中实现评论头像的自定义默认和延迟加载
2015/11/24 PHP
Zend Framework处理Json数据方法详解
2016/12/09 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
javascript while语句和do while语句的区别分析
2007/12/08 Javascript
javascript getElementsByTagName
2011/01/31 Javascript
纯JAVASCRIPT图表动画插件Highcharts Examples
2011/04/16 Javascript
jsonp原理及使用
2013/10/28 Javascript
html文档中的location对象属性理解及常见的用法
2014/08/13 Javascript
js+ajax实现获取文件大小的方法
2015/12/08 Javascript
AngularJs表单验证实例代码解析
2016/11/29 Javascript
JS实现的判断方法、变量是否存在功能示例
2020/03/28 Javascript
Node.js JSON模块用法实例分析
2019/01/04 Javascript
[02:36]DOTA2上海特锦赛 回忆电竞生涯的重要瞬间
2016/03/25 DOTA
Python实现将不规范的英文名字首字母大写
2016/11/15 Python
Python编程之字符串模板(Template)用法实例分析
2017/07/22 Python
基于python中theano库的线性回归
2018/08/31 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
2018/12/12 Python
在python 中实现运行多条shell命令
2019/01/07 Python
Django--权限Permissions的例子
2019/08/28 Python
python爬虫实现获取下一页代码
2020/03/13 Python
使用python从三个角度解决josephus问题的方法
2020/03/27 Python
python 使用elasticsearch 实现翻页的三种方式
2020/07/31 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
2021/03/02 Python
Currentbody西班牙:美容仪专家
2019/09/28 全球购物
英国知名小木屋定制网站:Tiger Sheds
2020/03/06 全球购物
三维科技面试题
2013/07/27 面试题
自我鉴定书范文
2013/10/02 职场文书
优秀毕业生自荐信
2014/06/10 职场文书
护士医德考评自我评价
2015/03/03 职场文书
2016年“七一建党节”广播稿
2015/12/18 职场文书
IDEA 链接Mysql数据库并执行查询操作的完整代码
2021/05/20 MySQL