初品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 相关文章推荐
phpfans留言版用到的install.php
Jan 04 PHP
Excel数据导入Mysql数据库的实现代码
Jun 05 PHP
深入PHP获取随机数字和字母的方法详解
Jun 06 PHP
php支付宝接口用法分析
Jan 04 PHP
Thinkphp和onethink实现微信支付插件
Apr 13 PHP
图文详解PHP环境搭建教程
Jul 16 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
Feb 15 PHP
php简单处理XML数据的方法示例
May 19 PHP
PHP实现求解最长公共子串问题的方法
Nov 17 PHP
thinkPHP5框架自定义验证器实现方法分析
Jun 11 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
Jun 13 PHP
goto语法在PHP中的使用教程
Sep 17 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
10个实用的PHP代码片段
2011/09/02 PHP
PHP中SESSION使用中的一点经验总结
2012/03/30 PHP
php flush无效,IIS7下php实时输出的方法
2016/08/25 PHP
PHP标准类(stdclass)用法示例
2016/09/28 PHP
prettify 代码高亮着色器google出品
2010/12/28 Javascript
javascript window.confirm确认 取消对话框实现代码小结
2012/10/21 Javascript
ie6下png图片背景不透明的解决办法使用js实现
2013/01/11 Javascript
Javascript中常见的校验如域名、手机、邮箱等等
2014/01/02 Javascript
jquery实现的用户注册表单提示操作效果代码分享
2015/08/28 Javascript
javascript中Date对象应用之简易日历实现
2016/07/12 Javascript
js 模仿锚点定位的实现方法
2016/11/19 Javascript
解析ajaxFileUpload 异步上传文件简单使用
2016/12/30 Javascript
深入理解Javascript中的valueOf与toString
2017/01/04 Javascript
Web开发使用Angular实现用户密码强度判别的方法
2017/09/27 Javascript
Nodejs实现爬虫抓取数据实例解析
2018/07/05 NodeJs
使用Object.defineProperty如何巧妙找到修改某个变量的准确代码位置
2018/11/02 Javascript
微信小程序实现富文本图片宽度自适应的方法
2019/01/20 Javascript
vue组件中watch props根据v-if动态判断并挂载DOM的问题
2019/05/12 Javascript
微信小程序自定义单项选择器样式
2019/07/25 Javascript
JavaScript 实现HTML DOM增删改查操作的常见方法详解
2020/01/04 Javascript
[04:00]DOTA2解说界神雕侠侣 CJ第四天谷子现场过生日
2013/07/30 DOTA
[03:49]显微镜下的DOTA2第十五期—VG登基之路完美团
2014/06/24 DOTA
Windows下将Python文件打包成.EXE可执行文件的方法
2018/08/03 Python
python实现自动解数独小程序
2019/01/21 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
2019/11/19 Python
pycharm永久激活超详细教程
2020/10/29 Python
python爬虫爬取淘宝商品比价(附淘宝反爬虫机制解决小办法)
2020/12/03 Python
Expedia意大利旅游网站:酒店、机票和租车预订
2017/10/30 全球购物
高级护理专业毕业生推荐信
2013/12/25 职场文书
工程班组长岗位职责
2013/12/30 职场文书
咖啡店创业计划书
2014/08/15 职场文书
全国助残日活动总结
2015/05/11 职场文书
培养联系人考察意见
2015/06/01 职场文书
周一问候语大全
2015/11/10 职场文书
IDEA 2022 Translation 未知错误 翻译文档失败
2022/04/24 Java/Android
清空 Oracle 安装记录并重新安装
2022/04/26 Oracle