CakePHPのソースを読む 05

2014-01-10

Cake/Core/App.php を読みます。 bootstrap.phpが呼び出されていた3つのファイルのうち2つ目です。  

1
2
3
require CAKE . 'basics.php';
require CAKE . 'Core' . DS . 'App.php';
require CAKE . 'Error' . DS . 'exceptions.php';

  Appクラスの中身を見ていきますが、全部読むのは面倒なので、uses関数にしぼります。 ※他に大事な関数があれば、後で追記します。  

1
2
3
public static function uses($className, $location) {
self::$_classMap[$className] = $location;
}

  なんじゃそりゃ?という感じですが、読みましょう。 メンバ変数の$_classMap配列に$classNameというキーと、場所を$locationでセットします。 ∑(゚д゚lll)ガーン、そんだけ。瞬時にロードされるかと思ったら違ってた。 App:usesしても、特に・・・なんすね。   実は、bootstrap.phpでは、App.phpをincludeした2行くらい下で、下記の記述があります。

1
spl_autoload_register(array('App', 'load'));

CakePHPのファイルロードはここを理解すれば、大体把握できそうですね。     ちなみに、クラスの定義以外だと、Utility内のInflectorクラスを$_classMapへ設定しています。

1
App::uses('Inflector', 'Utility');

うーむ、何故ここなのだろう・・。bootstrap.phpにはApp:usesを列挙している箇所があるので、そこでも良さそうだが・・・     ひとまず、本日はApp:usesは、配列に値をセットするだけということが確認出来ました。