Cakephp 执行主要流程


Posted in PHP onMarch 24, 2010

加载基本文件
cake/basics.php 里面定义了常用的方法以及时间常量
$TIME_START = getMicrotime(); 记录开始执行时间
cake/config/paths.php 里面定义一些基本路径
cake/lib/object.php cake的基本类
cake/lib/inflector.php 这里主要是处理单复数,带下划开命名以及驼峰式命名
cake/lib/configure.php 里面提供文件配置的读写,路径的设置,以及加载文件的方法
cake/lib/cache.php 缓存的操作

Configure::getInstance(); 开始对项目的配置
config/core.php 项目的配置文件
config/bootstrap.php 项目的入口文件

App::import(‘Core', array(‘Dispatcher')); 加载核心,开始做正事了,GO
$Dispatcher = new Dispatcher();
$Dispatcher->dispatch($url); 开始执行,通过对当前的url解析,如果你设置了压缩Js、Css,则对这些文件压缩输出,如果你对页面设置缓存,则直接输出缓存页面,最后查找相应的Controller。如果找不到,则进行相应的错误处理。
实例化当前Controller,确定视图路径,实例化Component,获得仅当前Controller[不包含父类Controller]的方法
对当前Controller中私有方法、带admin路由或者带prefix的方法进行保护,不允许直接访问
设置当前Controller的基本属性,如base、here、webroot、plugin、params、action、 passedArgs[array_merge($this->params['pass'],$this->params['named'])]
调用Controller中的constructClasses方法
执行__mergeVars方法,该方法对父子类的components、helpers、uses等属性进行特殊合并处理
调用Component->init()方法,载入用户设置的系列components(Session为默认),并默认enabled属性为true。(该属性可以后期在beforeFilter里修改)
调用Component->initialize()方法,若系列components里有这个initialize方法并且该component 的enabled为true,则调用该components->initialize方法(这里enabled用户好像无法通过 Controller设置,只能为true)
调用当前Controller中beforeFilter()方法,这个方法是个好东西^_^
调用Component->startup()方法,同样,若系列components里有这个startup方法并且该component的 enabled为true,则调用该components->startup方法(这里enabled倒是可以通过beforeFilter设 置),该方法也是components里最重要的方法,比如Auth就在这里大作文章^_^
开始执行当前Controller里的Action方法
如果设置autoRender为true,则根据调用当前Controller的render()方法,否则返回或输出Action方法的返回的数据
调用Controller的render()方法时,先调用当前Controller中的beforeRender()方法
加载视图渲染类
调用Component->beforeRender()方法,同样,若系列components里有这个beforeRender方法并且该 component的enabled为true,则调用该components->beforeRender方法(这里enabled可以通过 beforeFilter设置)
获取当前Model的数据验证错误信息,给View使用
调用View的render()方法
载入相关Helper助手
调用Helper的beforeRender()方法
调用Helper的afterRender()方法
相关的缓存处理
执行renderLayout()方法,当然前提你要允许渲染布局,默认为default.ctp布局文件
调用Helper的beforeLayout()方法
调用Helper的afterLayout()方法
调用Component->shutdown()方法,同样,若系列components里有这个shutdown方法并且该component的 enabled为true,则调用该components->shutdown方法(这里enabled可以通过beforeFilter设置)
执行当前Controller里的afterFilter方法,这里你可以对视图的输出内容($controller->output)做一些处理
返回或输出视图数据。
流程完毕。

PHP 相关文章推荐
PHP4实际应用经验篇(9)
Oct 09 PHP
ADODB结合SMARTY使用~超级强
Nov 25 PHP
《PHP边学边教》(04.编写简易的通讯录――视频教程1)
Dec 13 PHP
php目录管理函数小结
Sep 10 PHP
php获取目录所有文件并将结果保存到数组(实例)
Oct 25 PHP
php去除HTML标签实例
Nov 06 PHP
php获取随机数组列表的方法
Nov 13 PHP
54个提高PHP程序运行效率的方法
Jul 19 PHP
PHP自带方法验证邮箱是否存在
Feb 01 PHP
PHP常见的6个错误提示及解决方法
Jul 07 PHP
PHP CURL使用详解
Mar 21 PHP
phpstudy2020搭建站点的实现示例
Oct 30 PHP
php中的观察者模式
Mar 24 #PHP
PHP 获取远程文件内容的函数代码
Mar 24 #PHP
PHP中基本符号及使用方法
Mar 23 #PHP
PHP技术开发技巧分享
Mar 23 #PHP
PHP初学者常见问题集合 修正版(21问答)
Mar 23 #PHP
PHP5 字符串处理函数大全
Mar 23 #PHP
Smarty Foreach 使用说明
Mar 23 #PHP
You might like
php下使用以下代码连接并测试
2008/04/09 PHP
Drupal7中常用的数据库操作实例
2014/03/02 PHP
PHP实现将HTML5中Canvas图像保存到服务器的方法
2014/11/28 PHP
php使用get_class_methods()函数获取分类的方法
2016/07/20 PHP
PHP Mysqli 常用代码集合
2016/11/12 PHP
YII框架中搜索分页jQuery写法详解
2016/12/19 PHP
THINKPHP在添加数据的时候获取主键id的值方法
2017/04/03 PHP
php异常处理捕获错误整理
2019/09/23 PHP
jquery下为Event handler传递动态参数的代码
2011/01/06 Javascript
浅析Js(Jquery)中,字符串与JSON格式互相转换的示例(直接运行实例)
2013/07/09 Javascript
JavaScript新窗口与子窗口传值详解
2014/02/11 Javascript
js获得当前时区夏令时发生和终止的时间代码
2014/02/23 Javascript
使用jQuery重置(reset)表单的方法
2014/05/05 Javascript
jQuery.each使用详解
2015/07/07 Javascript
angular实现form验证实例代码
2017/01/17 Javascript
jquery点赞功能实现代码 点个赞吧!
2020/05/29 jQuery
Angularjs添加排序查询功能的实例代码
2017/10/24 Javascript
JS实现数组删除指定元素功能示例
2019/06/05 Javascript
原生JavaScript之es6中Class的用法分析
2020/02/23 Javascript
vue中axios封装使用的完整教程
2021/03/03 Vue.js
Python实现图片滑动式验证识别方法
2017/11/09 Python
Python实现PS图像调整黑白效果示例
2018/01/25 Python
Django项目中model的数据处理以及页面交互方法
2018/05/30 Python
Python人工智能之路 之PyAudio 实现录音 自动化交互实现问答
2019/08/13 Python
Python关于__name__属性的含义和作用详解
2020/02/19 Python
Python爬取梨视频的示例
2021/01/29 Python
写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度
2015/11/18 面试题
美容院营销方案
2014/03/05 职场文书
贷款担保书范文
2014/05/13 职场文书
股指期货心得体会
2014/09/10 职场文书
志愿者爱心公益活动策划方案
2014/09/15 职场文书
车辆委托书范本
2014/10/05 职场文书
2014年药房工作总结
2014/11/22 职场文书
青年教师个人总结
2015/02/11 职场文书
2015年八一建军节活动总结
2015/03/20 职场文书
2016年党员干部公开承诺书
2016/03/24 职场文书