`

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)做一些处理
返回或输出视图数据。
流程完毕。
分享到:
评论

相关推荐

    cakephp 框架书籍 英文版

    ### CakePHP框架书籍知识...以上是对“cakephp 框架书籍 英文版”中的主要知识点的概述。这本书籍涵盖了从基础概念到高级主题的各个方面,对于希望学习和使用CakePHP框架的开发者来说,是一份非常全面且有价值的资源。

    CakePHP 3.4 开发手册文档 CakePHP Cookbook Documentation Release 3.4

    - **安装**:介绍了 CakePHP 的安装要求及安装流程,推荐使用 Composer 进行安装。 - **部署**:包括开发服务器的搭建、生产环境的配置等内容。 #### 配置 - **配置你的应用**:提供了关于如何设置应用配置的基本...

    CakePHP依赖

    总结来说,Composer 是 CakePHP 项目依赖管理的关键,通过 `composer.json` 定义依赖,`composer.lock` 确保一致性,而 `composer.phar` 提供了执行操作的工具。了解并熟练掌握这些文件的用法,将有助于更有效地管理...

    cakephp 测试工具 simpletest

    页面测试在Web应用程序中通常指的是集成测试或功能测试,它涉及到整个页面的流程。在SimpleTest中,可以使用`WebTest`类来模拟浏览器行为,提交表单、点击链接、检查页面响应等。例如: ```php class MyPageTest ...

    CakePHP 3.5 开发手册文档 CakePHP Cookbook Documentation Release 3.5/共900页 PDF

    - **CakePHP Request Cycle**: CakePHP 的请求处理流程包括接收 HTTP 请求、路由请求到适当的控制器动作、执行模型和视图逻辑以及发送响应给客户端。 - **Just the Start**: 本书不仅仅介绍了框架的基础知识,还提供...

    cakephp中文手册

    CakePHP 解压后的目录结构主要包括以下三个主要部分: - **app**:应用程序的核心文件所在位置。 - **cake**:核心库文件,通常不应该直接修改。 - **vendors**:第三方类库存放的位置。 **2.2 app 目录详解** - ...

    cakephp文档

    ### CakePHP文档:简化PHP开发流程 #### 一、简介 CakePHP是一种广泛使用的开源PHP框架,它基于MVC(模型-视图-控制器)架构模式。该框架旨在简化Web应用开发过程,通过提供一系列内置工具和服务来加速开发速度。...

    CakePHP中文手册

    这个框架的核心理念是“简易而美味”,旨在简化开发流程,提高代码的可读性和可维护性。 CakePHP中文手册作为开发者的重要参考资料,包含了全面的API文档、教程、最佳实践以及常见问题解答,帮助开发者更好地理解和...

    初品cakephp 入门基础

    首先来看一下cakephp的的执行流程(从百度百科借来的图片): 1:首先你的服务器必须支持rewrite,如果是不支持rewrite的虚拟主机的话cakephp是不能正常运行的。 2:将所有的请求定向到cakephp框架后就进入了框架的...

    cakephp手册

    《CakePHP手册》详细介绍了AppController的基础知识,如何使用请求参数,创建控制器动作,以及利用生命周期回调函数来增强控制流程。 #### 五、视图设计 视图是用户与应用程序交互的界面。手册涵盖了如何创建模板...

    CakePHP入门翻译手册(序)

    总之,CakePHP是一个基于MVC模式的PHP框架,它简化了Web应用的开发流程,通过模型处理数据,视图呈现结果,控制器协调二者,实现了高效的代码组织和管理。理解并掌握MVC架构和CakePHP的用法,对于提升PHP开发效率和...

    CakePHP 1.3 Application Development Cookbook

    #### 三、书籍主要内容及章节结构 本书按照功能模块划分章节,每章聚焦于特定领域的开发技巧和最佳实践。以下是一些关键章节的简要介绍: 1. **第1章:基础设置** - CakePHP环境搭建。 - 安装与配置过程详解。 -...

    Windows下CakePHP单元测试环境搭建

    4. **完善测试方法**:参照官方文档中的流程图和指南,进一步完善测试方法。 5. **查看测试结果**:通过访问 `http://127.0.0.1/ygxbuilder/test.php` 或 `http://127.0.0.1/ygxbuilder/coverage` 查看测试结果。...

    CakePHP php框架 v4.5.4.zip

    通过实践,学生可以学习到Web应用的开发流程、MVC架构的应用、数据库设计和ORM操作,同时,还能理解框架的底层原理和代码组织方式。 五、模板建站与系统软件工具 CakePHP提供了丰富的插件和组件,使得模板建站变得...

    cakephp + jira soap client的使用

    2. Jira RESTful API:Jira软件提供了一组RESTful接口,允许开发者在远程服务器上执行操作,比如创建、更新和查询Issue。RESTful API是使用HTTP协议的典型代表,通过不同的HTTP方法来实现资源的CRUD操作(创建Create...

    codetron-cakephp2-api:api插件的codetron配方

    安装 `codetron-cakephp2-api` 插件通常通过 Composer 进行,将插件添加到项目的 `composer.json` 文件中,然后执行 `composer install` 命令。接着,将插件加载到 CakePHP 的配置文件中,启用相关的组件和行为。 #...

Global site tag (gtag.js) - Google Analytics