2

我正在准备面试,我是 cakephp 新手,在互联网上搜索时,我遇到了这个问题......
“当你使用 cakephp 运行应用程序时,第一个加载的文件是什么?”
回答:
面试官:当你使用 cakephp 运行应用程序时,第一个加载的文件是什么?
候选人:你能改变那个文件吗?面试官:是
的 bootstrap.php ,是的,是可以改变的,要么通过 index.php ,要么通过 htaccess
哪个文件先加载,如果那个特定的文件是不可改变的。
我试图找出答案,但无法得到答案。
有人可以帮我吗?

4

2 回答 2

4

第一个被加载的文件index.php(根据.htaccess重写规则)在 webroot 文件夹中,它将在包含路径中添加 CakePHP 的核心

CakePHP 1.3

if (!defined('CORE_PATH')) {
        if (function_exists('ini_set') && ini_set('include_path', CAKE_CORE_INCLUDE_PATH . PATH_SEPARATOR . ROOT . DS . APP_DIR . DS . PATH_SEPARATOR . ini_get('include_path'))) {
            define('APP_PATH', null);
            define('CORE_PATH', null);
        } else {
            define('APP_PATH', ROOT . DS . APP_DIR . DS);
            define('CORE_PATH', CAKE_CORE_INCLUDE_PATH . DS);
        }
    }
    if (!include(CORE_PATH . 'cake' . DS . 'bootstrap.php')) {
        trigger_error("CakePHP core could not be found.  Check the value of CAKE_CORE_INCLUDE_PATH in APP/webroot/index.php.  It should point to the directory containing your " . DS . "cake core directory and your " . DS . "vendors root directory.", E_USER_ERROR);
    }

CakePHP 2.1

if (!defined('CAKE_CORE_INCLUDE_PATH')) {
        if (function_exists('ini_set')) {
            ini_set('include_path', ROOT . DS . 'lib' . PATH_SEPARATOR . ini_get('include_path'));
        }
        if (!include('Cake' . DS . 'bootstrap.php')) {
            $failed = true;
        }
    } else {
        if (!include(CAKE_CORE_INCLUDE_PATH . DS . 'Cake' . DS . 'bootstrap.php')) {
            $failed = true;
        }
    }

然后它包括bootstrap.php两种情况。

所以答案是:index.php不应该修改它(除非你在某些特殊情况下),那么app/Config/bootstrap.php可以修改它

于 2012-05-16T10:37:09.170 回答
1

这可能会有所帮助:

从 cake 2.6 开始,这里是要加载的配置文件的顺序

core.php
database.php
bootstrap.php
routes.php
于 2015-10-17T15:41:17.280 回答