初品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的错误信息
Oct 09 PHP
php heredoc和phpwind的模板技术使用方法小结
Mar 28 PHP
PHP 判断变量类型实现代码
Oct 23 PHP
php的$_FILES的临时储存文件与回收机制实测过程
Jul 12 PHP
php使用curl检测网页是否被百度收录的示例分享
Jan 31 PHP
二进制交叉权限微型php类分享
Feb 07 PHP
五款PHP代码重构工具推荐
Oct 14 PHP
php 参数过滤、数据过滤详解
Oct 26 PHP
如何使用php脚本给html中引用的js和css路径打上版本号
Nov 18 PHP
php微信公众号开发模式详解
Nov 28 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
Jul 13 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
Aug 30 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 fsockopen函数被禁用的解决办法
2013/08/07 PHP
ThinkPHP令牌验证实例
2014/06/18 PHP
ThinkPHP中I(),U(),$this->post()等函数用法
2014/11/22 PHP
php使用array_search函数实现数组查找的方法
2015/06/12 PHP
php简单计算年龄的方法(周岁与虚岁)
2016/12/06 PHP
浅谈tudou土豆网首页图片延迟加载的效果
2010/06/23 Javascript
MooTools 页面滚动浮动层智能定位实现代码
2011/08/23 Javascript
js对table的td进行相同内容合并示例详解
2013/12/27 Javascript
JavaScript原生xmlHttp与jquery的ajax方法json数据格式实例
2015/12/04 Javascript
AngularJS 指令的交互详解及实例代码
2016/09/14 Javascript
微信小程序 网络请求(GET请求)详解
2016/11/16 Javascript
$.browser.msie 为空或不是对象问题的多种解决方法
2017/03/19 Javascript
在Vue.js中使用Mixins的方法
2017/09/12 Javascript
实例讲解Vue.js中router传参
2018/04/22 Javascript
webpack打包多页面的方法
2018/11/30 Javascript
详解vue 命名视图
2019/08/14 Javascript
Vue项目中使用better-scroll实现菜单映射功能方法
2019/09/11 Javascript
Nuxt页面级缓存的实现
2020/03/09 Javascript
vue 路由meta 设置导航隐藏与显示功能的示例代码
2020/09/04 Javascript
跟老齐学Python之开始真正编程
2014/09/12 Python
python连接oracle数据库实例
2014/10/17 Python
python自带的http模块详解
2016/11/06 Python
Python AES加密模块用法分析
2017/05/22 Python
对python中array.sum(axis=?)的用法介绍
2018/06/28 Python
python编写简单端口扫描器
2019/09/04 Python
python+selenium+chromedriver实现爬虫示例代码
2020/04/10 Python
庆八一活动方案
2014/01/25 职场文书
祖国在我心中的演讲稿
2014/05/04 职场文书
推普周国旗下讲话稿
2014/09/21 职场文书
2014年生产部工作总结
2014/12/17 职场文书
2015年敬老月活动总结
2015/03/27 职场文书
大学自主招生自荐信(2016精选篇)
2016/01/28 职场文书
2019辞职报告范本3篇!
2019/07/23 职场文书
用Python监控你的朋友都在浏览哪些网站?
2021/05/27 Python
CSS作用域(样式分割)的使用汇总
2021/11/07 HTML / CSS
MySQL外键约束(Foreign Key)案例详解
2022/06/28 MySQL