初品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原理之变量(Variables inside PHP)
Aug 09 PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
Apr 21 PHP
PHP访问数据库集群的方法小结
Mar 14 PHP
PHP框架Laravel插件Pagination实现自定义分页
Apr 22 PHP
phpmailer简单发送邮件的方法(附phpmailer源码下载)
Jun 13 PHP
thinkPHP交易详情查询功能详解
Dec 02 PHP
详解PHP安装mysql.so扩展的方法
Dec 31 PHP
Yii CDBCriteria常用方法实例小结
Jan 19 PHP
PHP APP微信提现接口代码
Sep 30 PHP
PDO::_construct讲解
Jan 27 PHP
PHP7内核CGI与FastCGI详解
Apr 14 PHP
PHPUnit + Laravel单元测试常用技能
Nov 06 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中的数据传输CURL
2016/09/06 PHP
javascript 按回车键相应按钮提交事件
2009/11/02 Javascript
Javascript仿PHP $_GET获取URL中的参数
2014/05/12 Javascript
js实现同一个页面多个渐变效果的方法
2015/04/10 Javascript
jQuery解析XML文件同时动态增加js文件的方法
2015/06/01 Javascript
Bootstrap每天必学之js插件
2015/11/30 Javascript
AngularJS基础 ng-show 指令简单示例
2016/08/03 Javascript
每个程序员都需要学习 JavaScript 的7个理由小结
2016/09/03 Javascript
RequireJS 依赖关系的实例(推荐)
2017/01/21 Javascript
浅谈原生JS实现jQuery的animate()动画示例
2017/03/08 Javascript
详谈js原型继承的一些问题
2017/09/06 Javascript
Vue框架之goods组件开发详解
2018/01/25 Javascript
JS数组push、unshift、pop、shift方法的实现与使用方法示例
2020/04/29 Javascript
Vue自定义render统一项目组弹框功能
2020/06/07 Javascript
[01:22:10]Ti4 循环赛第二日 DK vs Empire
2014/07/11 DOTA
[22:59]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
MySQL中表的复制以及大型数据表的备份教程
2015/11/25 Python
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
2017/06/12 Python
Python中文件的读取和写入操作
2018/04/27 Python
在python中使用xlrd获取合并单元格的方法
2018/12/26 Python
Python实现CNN的多通道输入实例
2020/01/17 Python
Django框架配置mysql数据库实现过程
2020/04/22 Python
Django 实现 Websocket 广播、点对点发送消息的代码
2020/06/03 Python
Python tkinter实现日期选择器
2021/02/22 Python
中国电视购物:快乐购
2017/02/04 全球购物
亚马逊墨西哥站:Amazon.com.mx
2018/08/26 全球购物
Super-Pharm波兰:药房和香水在一个地方
2020/08/18 全球购物
工艺工程师工作职责
2013/11/23 职场文书
一份报关员的职业规划范文
2014/01/08 职场文书
党员党性分析材料
2014/02/17 职场文书
广告学专业毕业生自荐信
2014/05/28 职场文书
防灾减灾日活动总结
2014/08/26 职场文书
党员十八大心得体会
2014/09/12 职场文书
公务员考察材料
2014/12/23 职场文书
C#连接ORACLE出现乱码问题的解决方法
2021/10/05 Oracle
SQL中的连接查询详解
2022/06/21 SQL Server