初品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 输出简单动态WAP页面
Jun 09 PHP
php面向对象全攻略 (十四) php5接口技术
Sep 30 PHP
深入PHP与浏览器缓存的分析
Jun 03 PHP
PHP Global定义全局变量使用说明
Aug 15 PHP
举例讲解PHP面对对象编程的多态
Aug 12 PHP
ThinkPHP3.2.1图片验证码实现方法
Aug 19 PHP
thinkPHP的表达式查询用法详解
Sep 14 PHP
PHP简单读取xml文件的方法示例
Apr 20 PHP
php7安装yar扩展的方法详解
Aug 03 PHP
PHP观察者模式定义与用法实例分析
Mar 22 PHP
PHP实现计算器小功能
Aug 28 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
星际RPG字典
2020/03/04 星际争霸
php使用curl检测网页是否被百度收录的示例分享
2014/01/31 PHP
smarty获得当前url的方法分享
2014/02/14 PHP
浅谈PHP表单提交(POST&GET&URL编/解码)
2017/04/03 PHP
PHP使用文件锁解决高并发问题示例
2018/03/29 PHP
Laravel5框架添加自定义辅助函数的方法
2018/08/01 PHP
php提供实现反射的方法和实例代码
2019/09/17 PHP
javascript form 验证函数 弹出对话框形式
2009/06/23 Javascript
CSS(js)限制页面显示的文本字符长度
2012/12/27 Javascript
javascript截取字符串(通过substring实现并支持中英文混合)
2013/06/24 Javascript
Javascript表格翻页效果实现思路及代码
2013/08/23 Javascript
jQuery中addClass()方法用法实例
2015/01/05 Javascript
jQuery固定元素插件scrolltofixed使用指南
2015/04/21 Javascript
使用纯javascript实现经典扫雷游戏
2015/04/23 Javascript
JavaScript代码实现左右上下自动晃动自动移动
2016/04/08 Javascript
jquery拖动改变div大小
2017/07/04 jQuery
浅谈Node.js ORM框架Sequlize之表间关系
2017/07/24 Javascript
vue滚动轴插件better-scroll使用详解
2017/10/17 Javascript
旺旺在线客服代码 旺旺客服代码生成器
2018/01/09 Javascript
vue使用vant中的checkbox实现全选功能
2020/11/17 Vue.js
[00:58]2016年国际邀请赛勇士令状宣传片
2016/06/01 DOTA
python使用正则表达式分析网页中的图片并进行替换的方法
2015/03/26 Python
Python Sqlite3以字典形式返回查询结果的实现方法
2016/10/03 Python
python中的for循环
2018/09/28 Python
对Python3中列表乘以某一个数的示例详解
2019/07/20 Python
python接入支付宝的实例操作
2020/07/20 Python
BeautifulSoup获取指定class样式的div的实现
2020/12/07 Python
CSS3实现歌词进度文字颜色填充变化动态效果的思路详解
2020/06/02 HTML / CSS
生产车间主管岗位职责
2013/12/28 职场文书
团代会主持词
2014/04/02 职场文书
交通事故赔偿协议书
2014/10/16 职场文书
会议承办单位欢迎词
2015/09/30 职场文书
使用kubeadm命令行工具创建kubernetes集群
2022/03/31 Servers
从零开始在Centos7上部署SpringBoot项目
2022/04/07 Servers
MySQL库表太大怎么办? 数据库分库分表项目实践
2022/04/11 MySQL
postgresql之greenplum字符串去重拼接方式
2023/05/08 PostgreSQL