Cakephp 执行主要流程

 更新时间:2010年03月24日 20:10:21   作者:  
Cakephp执行主要流程,学习cakephp的朋友可以参考下。
加载基本文件
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判断文件是否被引入的方法get_included_files用法示例

    PHP判断文件是否被引入的方法get_included_files用法示例

    这篇文章主要介绍了PHP判断文件是否被引入的方法get_included_files用法,结合实例形式分析了get_included_files函数获取引入文件及遍历输出的操作技巧,需要的朋友可以参考下
    2016-11-11
  • php使用curl获取header检测开启GZip压缩的方法

    php使用curl获取header检测开启GZip压缩的方法

    这篇文章主要介绍了php使用curl获取header检测开启GZip压缩的方法,结合实例形式总结分析了三种常见的header检测方法并给出了使用curl检测Gzip压缩开启情况的方法,需要的朋友可以参考下
    2018-08-08
  • PHP中register_shutdown_function函数的基础介绍与用法详解

    PHP中register_shutdown_function函数的基础介绍与用法详解

    php中的异常捕获没有java的强大,有些情况下,需要知道某段php程序业务是否正常执行完,可以用register_shutdown_function函数来辅助实现,这篇文章主要给大家介绍了关于PHP中register_shutdown_function函数的基础介绍与用法的相关资料,需要的朋友可以参考。
    2017-11-11
  • 微信公众平台开发教程②微信端分享功能图文详解

    微信公众平台开发教程②微信端分享功能图文详解

    这篇文章主要介绍了微信公众平台开发微信端分享功能,结合图文形式详细分析了微信分享功能的原理、操作步骤及相关实现技巧,需要的朋友可以参考下
    2019-04-04
  • PHP 金额数字转换成英文

    PHP 金额数字转换成英文

    找了很久,搜索的关键词总是词不达意似的。
    2010-05-05
  • php google或baidu分页代码

    php google或baidu分页代码

    php实现google与baidu的分页代码,需要的朋友可以参考下。
    2009-11-11
  • 关于PHP的curl开启问题探讨

    关于PHP的curl开启问题探讨

    新浪提供的PHP SDK里需要用到curl_init()函数,在调试的时候报找不到curl_init()的方法,下面为大家介绍下开启curl的步骤
    2014-04-04
  • php实现文件下载更能介绍

    php实现文件下载更能介绍

    PHP用代码实现文件下载,阅读PHP用代码实现文件下载,我们一般实现下载都是调用url来下载,但是遇到ie能识别打开的文件就不能用这种方式了,本文将介绍关于PHP实现文件下载,需要聊解更多的朋友可以参考下
    2012-11-11
  • PHP中文竖排转换实现方法

    PHP中文竖排转换实现方法

    这篇文章主要介绍了PHP中文竖排转换实现方法,一般大家的阅读习惯是一行行浏览,很少使用竖排进行阅读,本文介绍了PHP实现中文竖排转换,感兴趣的小伙伴们可以参考一下
    2015-10-10
  • php简单分页类实现方法

    php简单分页类实现方法

    这篇文章主要介绍了php简单分页类实现方法,实例分析了php分页类的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02

最新评论