我正在使用cakephp,我需要一些关于启动的澄清。 哪个文件将首先在cakephp中加载,无论是index.php还是bootstrap文件
答案 0 :(得分:3)
Ganesh的答案并不正确。它不会重定向,也不会将AppController加载为第三个文件,也不会直接加载它。
首先,您应该始终从app / webroot文件夹配置您的站点,而不是上面级别的index.php,因为如果您这样做,您也会将整个应用程序结构公开给公共Web。
当访问app / webroot / index.php时,CakePHP设置了一堆常量,如CAKE_CORE_INCLUDE_PATH,WWW_ROOT和其他一些常量,最好是查看这个文件。
然后它将包含bootstrap.php文件。
在此文件的末尾,您将看到不是AppController,而是先调用Dispatcher,并将Request / Response类传递给它。
$Dispatcher = new Dispatcher();
$Dispatcher->dispatch(
new CakeRequest(),
new CakeResponse()
);
然后,仍然没有加载控制器。它首先触发事件,并通过此调度程序过滤器可以中断请求并已将数据发送回客户端。这就是AssetDispatcher的工作原理。再次,这里仍然没有控制器。
如果过滤器通过,则调度程序将调用与请求的url匹配的控制器,而不是AppController,如果调用/ users / index,它将实例化UsersController并调用其index()方法。请参阅Dispatcher::_loadController()。
所有控制器都应该扩展AppController,但实际上永远不会直接调用AppController。
答案 1 :(得分:-1)
当首先访问cakephp应用程序时,它将从那里加载index.php,它重定向到bootstrap.php,然后再重定向到AppController.php。