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处理输出
这一段着实不懂呢