cakephp加载流程

1、首先要定义下app/web_root/为虚拟主机的根目录

2、如果不是也会请求到那个文件,所以web_root就是入口文件

入口文件定义了全局变量,定义了很多路径相关的信息,比如

web_root

app

css

这里实在是太多了

3、加载三个文件

require CAKE . 'basics.php';
require CAKE . 'Core' . DS . 'App.php';
require CAKE . 'Error' . DS . 'exceptions.php';

然后定义了home_url

FULL_BASE_URL

app类设置为自动加载

然后加载一些组建

spl_autoload_register(array('App', 'load'));

App::uses('ErrorHandler', 'Error');
App::uses('Configure', 'Core');
App::uses('CakePlugin', 'Core');
App::uses('Cache', 'Cache');
App::uses('Object', 'Core');
App::uses('Multibyte', 'I18n');
App::$bootstrapping = true;

Configure::bootstrap(isset($boot) ? $boot : true);

这里需要注意的是,basics.php

这不是一个类,这是一个全局的方法包括config debuger h pr等一些方法

在bootstrap中也定义了很多的全局方法

然后开始启用调度器,和路由,同时初始化了request 和 response

App::uses('Dispatcher', 'Routing');

$Dispatcher = new Dispatcher();
$Dispatcher->dispatch(
    new CakeRequest(),
    new CakeResponse()
);

4、去看看调度器类

开始调度

App::uses('Router', 'Routing');
App::uses('CakeRequest', 'Network');
App::uses('CakeResponse', 'Network');
App::uses('Controller', 'Controller');
App::uses('Scaffold', 'Controller');
App::uses('View', 'View');
App::uses('Debugger', 'Utility');
App::uses('CakeEvent', 'Event');
App::uses('CakeEventManager', 'Event');
App::uses('CakeEventListener', 'Event');

加载了这么多东西

5、初始化控制器

传入request 

调用controller的处理方法

调用response处理输出

这一段着实不懂呢

posted @ 2013-02-28 18:20  linksgo2011  阅读(325)  评论(0编辑  收藏  举报