初品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编程语言开发动态WAP页面
Oct 09 PHP
用PHP和ACCESS写聊天室(八)
Oct 09 PHP
PHP 工厂模式使用方法
May 18 PHP
PHP通过session id 实现session共享和登录验证的代码
Jun 03 PHP
Yii实现多按钮保存与提交的方法
Dec 03 PHP
详解PHP的Yii框架中日志的相关配置及使用
Dec 08 PHP
cakephp2.X多表联合查询join及使用分页查询的方法
Feb 23 PHP
php利用fsockopen GET/POST提交表单及上传文件
May 22 PHP
php如何利用pecl安装mongodb扩展详解
Jan 09 PHP
PHP与Perl之间知识点区别整理
Mar 19 PHP
PHP大文件及断点续传下载实现代码
Aug 18 PHP
THINKPHP-Apache服务器中使用Alias虚拟目录URL重写 隐藏index.php
Mar 09 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和mysql中uft-8中文编码乱码的几种解决办法
2012/04/19 PHP
php中的登陆login实例代码
2016/06/20 PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
2017/01/13 PHP
在 Laravel 6 中缓存数据库查询结果的方法
2019/12/11 PHP
一个cssQuery对象 javascript脚本实现代码
2009/07/21 Javascript
JavaScript 面向对象的之私有成员和公开成员
2010/05/04 Javascript
Backbone.js的Hello World程序实例
2015/06/19 Javascript
js中string和number类型互转换技巧(分享)
2016/11/28 Javascript
详解webpack+vue-cli项目打包技巧
2017/06/17 Javascript
Vue-Router实现组件间跳转的三种方法
2017/11/07 Javascript
swiper在angularjs中使用循环轮播失效的解决方法
2018/09/27 Javascript
vue中slot(插槽)的介绍与使用
2018/11/12 Javascript
Vue中axios的封装(报错、鉴权、跳转、拦截、提示)
2019/08/20 Javascript
JavaScript获取某一天所在的星期
2019/09/05 Javascript
ant design vue中表格指定格式渲染方式
2020/10/28 Javascript
[05:08]顺网杯ISS-DOTA2赛歌 少女偶像Lunar青春演绎
2013/12/05 DOTA
[31:33]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第一场
2014/05/23 DOTA
[06:53]DOTA2每周TOP10 精彩击杀集锦vol.3
2014/06/25 DOTA
[00:57]深扒TI7聊天轮盘语音出处5
2017/05/11 DOTA
[03:40]DOTA2抗疫特别篇《英雄年代》
2020/02/28 DOTA
python每次处理固定个数的字符的方法总结
2013/01/29 Python
python写入xml文件的方法
2015/05/08 Python
python实现读取excel写入mysql的小工具详解
2017/11/20 Python
pycharm中使用anaconda部署python环境的方法步骤
2018/12/19 Python
六行python代码的爱心曲线详解
2019/05/17 Python
简单了解django索引的相关知识
2019/07/17 Python
python入门之基础语法学习笔记
2020/02/08 Python
史上最详细的Python打包成exe文件教程
2021/01/17 Python
销售业务员岗位职责
2014/01/29 职场文书
可贵的沉默教学反思
2014/02/06 职场文书
优秀毕业生事迹材料
2014/02/12 职场文书
学校元旦晚会方案
2014/02/19 职场文书
五四青年节活动总结
2015/02/10 职场文书
给领导敬酒词
2015/08/12 职场文书
浅谈Redis中的RDB快照
2021/06/29 Redis
如何通过简单的代码描述Angular父组件、子组件传值
2022/04/07 Javascript