CakePHP解析 Archive
app/webroot/index.php(CakePHP解析 #1)
- 2008-05-05 (月)
- CakePHP解析
はてな自習室から、こっちへ移動。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実行ファイルから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の概念がよく分かってなかったので早速勉強になりました。