初品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 相关文章推荐
dedecms后台验证码总提示错误的解决方法
Mar 21 PHP
PHP 编程的 5个良好习惯
Feb 20 PHP
PHP memcache扩展的三种安装方法
Apr 26 PHP
PHP删除特定数组内容并且重建数组索引的方法.
Mar 25 PHP
php像数组一样存取和修改字符串字符
Mar 21 PHP
php基于表单密码验证与HTTP验证用法实例
Jan 06 PHP
php验证码的制作思路和实现方法
Nov 12 PHP
thinkphp3.2实现上传图片的控制器方法
Apr 28 PHP
PHP实现根据数组某个键值大小进行排序的方法
Mar 13 PHP
php 提交表单 关闭layer弹窗iframe的实例讲解
Aug 20 PHP
Laravel等框架模型关联的可用性浅析
Dec 15 PHP
php随机生成验证码,php随机生成数字,php随机生成数字加字母!
Apr 01 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面向对象全攻略 (十六) 对象的串行化
2009/09/30 PHP
初学CAKEPHP 基础教程
2009/11/02 PHP
详解PHP 7.4 中数组延展操作符语法知识点
2019/07/19 PHP
基于PHP实现解密或加密Cloudflar邮箱保护
2020/06/24 PHP
javascript Discuz代码中的msn聊天小功能
2008/05/25 Javascript
JQUERY 对象与DOM对象之两者相互间的转换
2009/04/27 Javascript
轻轻松松学JS调试(不下载任何工具)
2010/04/14 Javascript
EasyUi tabs的高度与宽度根据IE窗口的变化自适应代码
2010/10/26 Javascript
javascript 进阶篇3 Ajax 、JSON、 Prototype介绍
2012/03/14 Javascript
多个表单中如何获得这个文件上传的网址实现js代码
2013/03/25 Javascript
将中国标准时间转换成标准格式的代码
2014/03/20 Javascript
node.js中的console用法总结
2014/12/15 Javascript
jQuery实现跨域iframe接口方法调用
2015/03/14 Javascript
jQuery实现导航滚动到指定内容效果完整实例【附demo源码下载】
2016/09/20 Javascript
详解jquery validate实现表单验证 (正则表达式)
2017/01/18 Javascript
nodejs初始化init的示例代码
2018/10/10 NodeJs
JQuery+drag.js上传图片并且实现图片拖曳
2020/11/18 jQuery
使用Python对SQLite数据库操作
2017/04/06 Python
Python机器学习之SVM支持向量机
2017/12/27 Python
简单了解Python3里的一些新特性
2019/07/13 Python
Python 批量刷博客园访问量脚本过程解析
2019/08/30 Python
python进程间通信Queue工作过程详解
2019/11/01 Python
Python新手如何进行闭包时绑定变量操作
2020/05/29 Python
浅谈Python中的模块
2020/06/10 Python
Python常用数字处理基本操作汇总
2020/09/10 Python
解决HTML5中的audio在手机端和微信端的不能自动播放问题
2019/11/04 HTML / CSS
Vertbaudet西班牙网上商店:婴儿服装、童装、母婴用品和儿童家具
2019/10/16 全球购物
一套软件测试笔试题
2014/07/25 面试题
个人社会实践自我鉴定
2014/03/24 职场文书
2014年党课学习心得体会
2014/07/08 职场文书
市场策划求职信
2014/08/07 职场文书
付款承诺函范文
2015/01/21 职场文书
银行优秀员工推荐信
2015/03/24 职场文书
公司出差管理制度范本
2015/08/05 职场文书
Java Dubbo框架知识点梳理
2021/06/26 Java/Android
Python数据可视化之Seaborn的安装及使用
2022/04/19 Python