Home > CakePHP > CakePHP解析

CakePHP解析 Archive

app/webroot/index.php(CakePHP解析 #1)


はてな自習室から、こっちへ移動。CakePHPを解析しつつPHPとCakePHPを勉強をしています。
まずは「app/webroot/index.php」からですが、ここで肝になるのは『include_path』ではないでしょうか。

[sourcecode language='php']
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);
}
}
[/sourcecode]

で、include_pathってなんぞや?ってなるわけですが、こちらのデジットさんの説明がとっても分かりやすいです。

デジットさんのPHPのinclude_path

ここが重要ですね。探す順番。

PHP実行ファイルからrequire()、include()等で読み出されるファイルは、次の順番で探されます。

1. include_pathで設定されているディレクトリ
2. 実行しているファイルのあるディレクトリ
3. ./ 又は ../ で始まっている場合は、 実行しているファイルのあるディレクトリからの相対パス

更に、require()、include()されたファイル(例えば「inc.php」)の中にrequire()、include()がある場合は、当然上記のディレクトリを探した後に「inc.php」ファイルがあるディレクトリも探します。

自分の環境で「var_dump(ini_get(‘include_path’));」としてみたところ次のように出力されました。

string(57) “C:\www\schedule;C:\www\schedule\app\;.;C:\xampp\php\pear\”

CakePHPのフォルダを配置した場所が「C:\www\schedule」なので、CakePHPのルートに当たるディレクトリとその下層の「app」フォルダがinclude_pathに追加されたようです。ちなみに「.;C:\xampp\php\pear\」はphp.iniファイルに設定されていました。

このinclude_pathの設定により、requireやincludeでいちいち相対パスを指定する必要が無くなるわけですね。include_pathの概念がよく分かってなかったので早速勉強になりました。

ホーム > CakePHP > CakePHP解析

フィード

メタ

Return to page top