初品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 array 的加法操作代码
Jul 24 PHP
php自动获取目录下的模板的代码
Aug 08 PHP
PHP使用DES进行加密与解密的方法详解
Jun 06 PHP
PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
May 10 PHP
php数组键名技巧小结
Feb 17 PHP
PHP中使用BigMap实例
Mar 30 PHP
PHP闭包函数详解
Feb 13 PHP
thinkphp表单上传文件并将文件路径保存到数据库中
Jul 28 PHP
php简单截取字符串代码示例
Oct 19 PHP
PHP基于堆栈实现的高级计算器功能示例
Sep 15 PHP
Laravel学习教程之request validation的编写
Oct 25 PHP
PHP中使用CURL发送get/post请求上传图片批处理功能
Oct 15 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中strtotime函数使用方法分享
2012/01/10 PHP
PHP生成等比缩略图类和自定义函数分享
2014/06/25 PHP
mysql查找删除重复数据并只保留一条实例详解
2016/09/24 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
PHP检查端口是否可以被绑定的方法示例
2018/08/09 PHP
input按钮的事件处理大全
2010/12/10 Javascript
在JavaScript中操作数组之map()方法的使用
2015/06/09 Javascript
Vue.js -- 过滤器使用总结
2017/02/18 Javascript
Angular 2父子组件数据传递之@Input和@Output详解(下)
2017/07/05 Javascript
深入学习nodejs中的async模块的使用方法
2017/07/12 NodeJs
vue监听键盘事件的快捷方法【推荐】
2018/07/11 Javascript
详解使用angular框架离线你的应用(pwa指南)
2019/01/31 Javascript
将RGB值转换为灰度值的简单算法
2019/10/09 Javascript
JS Html转义和反转义(html编码和解码)的实现与使用方法总结
2020/03/10 Javascript
基于element-ui封装可搜索的懒加载tree组件的实现
2020/05/22 Javascript
Vue看了就会的8个小技巧
2021/01/21 Vue.js
python读取注册表中值的方法
2013/04/08 Python
在Python中操作字符串之replace()方法的使用
2015/05/19 Python
python多线程之事件Event的使用详解
2018/04/27 Python
Django代码性能优化与Pycharm Profile使用详解
2018/08/26 Python
Django2.1.3 中间件使用详解
2018/11/26 Python
django如何通过类视图使用装饰器
2019/07/24 Python
Keras模型转成tensorflow的.pb操作
2020/07/06 Python
Python3+Django get/post请求实现教程详解
2021/02/16 Python
详解Canvas事件绑定
2018/06/27 HTML / CSS
Myprotein荷兰官网:欧洲第一运动营养品牌
2020/07/11 全球购物
美德好少年主要事迹
2014/01/29 职场文书
交通事故私了协议书
2014/04/16 职场文书
最美家庭活动方案
2014/08/31 职场文书
公司委托书范本5篇
2014/09/20 职场文书
民政局办理协议离婚(范本)
2014/10/25 职场文书
维稳工作承诺书
2015/01/20 职场文书
交通事故代理词范文
2015/05/23 职场文书
正规借条模板
2015/05/26 职场文书
Redis三种集群模式详解
2021/10/05 Redis
漫画《尖帽子的魔法工坊》宣布动画化
2022/04/06 日漫