CakePHPのソースを読む 04

2014-01-09

bootstrap.phpから読み込まれるファイルを順々に読んでいきましょう。  

(1) require CAKE . ‘basics.php’

最初は秒換算した場合の、時間定数が書かれています。

1
2
3
4
5
6
7
define('SECOND', 1); 
define('MINUTE', 60);
define('HOUR', 3600);
define('DAY', 86400);
define('WEEK', 604800);
define('MONTH', 2592000);
define('YEAR', 31536000);

なるほどー、こいつらは普通に使えそうですね。   次にconfig関数を定義しています。 引数で指定された名前のconfigファイルをconfigディレクトリが探すための関数です。

1
2
3
4
5
6
7
8
9
10
11
12
function config() {
$args = func_get_args();
$count = count($args);
$included = 0;
foreach ($args as $arg) {
if (file_exists(APP . 'Config' . DS . $arg . '.php')) {
include_once APP . 'Config' . DS . $arg . '.php';
$included++;
}
}
return $included === $count;
}

database.phpとかmail.phpとかは、これを使ってincludeしてるみたいですね。   この後は・・・面倒くさいので、定義されている関数を列挙。 実は、この時点では読み込まれていないConfigureクラスのコンフィグ読み込み関数も関数定義内で使われているけど、まだ呼び出しは無いので大丈夫。

  • debug => デバッグ出力関数
  • sortbykey => 2次元配列のkeyでsortしてvalueだけの配列を返す
  • h => 色々と工夫されたhtmlのエスケープ関数
  • pluginSplit => プラグイン名の分割用関数
  • pr => print_r ※debugが1以上じゃないと出力しない
  • am => 可変引数で、受け取った配列を全部マージする
  • env => 環境変数取得用だけどHTTPSとかはかなり柔軟に判定してくれている ※使えそう
  • cache => ファイル使ったキャッシュ
  • cahceClear => 上のキャッシュを消す
  • stripslashes_deep => 引数の配列内のスラッシュを全部消す
  • __ => ktkr! 多言語対応用のメッセージ取得メソッドはこの段階で定義されていました。
  • __n => 単数形の名前を複数形にするらしいす。
  • __d => 国ドメイン指定で、メッセージを取得
  • __dn => 上の組み合わせ
  • __dc => 国ドメインとカテゴリーも指定
  • __dcn => 上の全部組み合わせ
  • __c => カテゴリー指定
  • LogError => Log::writeのショートカット
  • fileExistsInPath => include_path内をファイル検索する
  • convertSlash => 前方と後方のアンスコを削除して、全てのslashをアンスコに置換。二重slashは一つにされちゃう。
    上の関数達は、クラスにも所属しないユーザ定義関数なので、bootstrap.php以降のどこでも呼び出せます。 多言語対応のメッセージ取得は、こんなに早い段階で定義されていたんすね。 明日はいよいよ App.php。