初品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 相关文章推荐
ftp类(example.php)
Oct 09 PHP
PHP学习之PHP变量
Oct 09 PHP
php中处理mysql_fetch_assoc返回来的数组 不用foreach----echo
May 04 PHP
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
Aug 28 PHP
php获取指定日期之间的各个周和月的起止时间
Nov 24 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
Feb 28 PHP
详解PHP字符串替换str_replace()函数四种用法
Oct 13 PHP
thinkPHP通用控制器实现方法示例
Nov 23 PHP
php实现将数据做成json的格式给前端使用
Aug 21 PHP
PHP单文件上传原理及上传函数的封装操作示例
Sep 02 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
Feb 27 PHP
TP5框架页面跳转样式操作示例
Apr 05 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写的获取各搜索蜘蛛爬行记录代码
2012/08/21 PHP
php获取淘宝分类id示例
2014/01/16 PHP
PHP定时更新程序设计思路分享
2014/06/10 PHP
PHP中的Session对象如何使用
2015/09/25 PHP
简单的自定义php模板引擎
2016/08/26 PHP
php实现将HTML页面转换成word并且保存的方法
2016/10/14 PHP
Laravel 5.5官方推荐的Nginx配置学习教程
2017/10/06 PHP
php-msf源码详解
2017/12/25 PHP
php json转换相关知识(小结)
2018/12/21 PHP
jQuery 对象中的类数组操作
2009/04/27 Javascript
在一个浏览器里呈现所有浏览器测试结果的前端测试工具的思路
2010/03/02 Javascript
jQuery判断元素是否存在的可靠方法
2014/05/06 Javascript
通过jquery 获取URL参数并进行转码
2014/08/18 Javascript
jQuery实现仿新浪微博浮动的消息提示框(可智能定位)
2015/10/10 Javascript
MVC+jQuery.Ajax异步实现增删改查和分页
2020/12/22 Javascript
JS面试题---关于算法台阶的问题
2016/07/26 Javascript
jquery实现点击页面回到顶部
2016/11/23 Javascript
详解Angularjs在控制器(controller.js)中使用过滤器($filter)格式化日期/时间实例
2017/02/17 Javascript
js实现图片旋转 js滚动鼠标中间对图片放大缩小
2017/07/05 Javascript
Node中使用ES6语法的基础教程
2018/01/05 Javascript
vue微信分享出来的链接点开是首页问题的解决方法
2018/11/28 Javascript
Vue3.0结合bootstrap创建多页面应用
2019/05/28 Javascript
Vue程序调试的方法
2019/06/17 Javascript
React学习之受控组件与数据共享实例分析
2020/01/06 Javascript
python中的对象拷贝示例 python引用传递
2014/01/23 Python
500行Python代码打造刷脸考勤系统
2019/06/03 Python
Django MEDIA的配置及用法详解
2019/07/25 Python
python tkinter基本属性详解
2019/09/16 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
2020/02/10 Python
django执行原始查询sql,并返回Dict字典例子
2020/04/01 Python
python网络爬虫实现发送短信验证码的方法
2021/02/25 Python
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
2014/01/19 面试题
自考自我鉴定范文
2013/10/30 职场文书
感恩节活动方案
2014/01/27 职场文书
2014年发展党员工作总结
2014/11/12 职场文书
乡镇一岗双责责任书
2015/01/29 职场文书