■■ 2. core.php
次は core.php のほうです。
bootstrap.php よりも先に読み込まれます。
(bootstrap.php に戻るならこちら。)
(core.php の全訳ファイルはこちら。)
■2-1) 冒頭
■2-2) デバッグレベル
■2-3) エラーハンドラ
■2-4) 例外ハンドラ
■2-5) charset エンコーディング
■2-6) mod_rewrite使わない場合の設定
使わないようにすると、生成される URL が /inde.php/コントローラ名/アクション名 のようになります。
mod_rewrite は使えるなら使ったほうがいいでしょう。
■2-7) 接頭辞ルート(Prefix routes)
管理者用のURLが生成しやすくなっています。
UsersContoroller に admin_index() と index() の両方を実装した場合、
通常ならそれぞれ、/users/admin と /users/ でアクセスすることになりますが、
Configure::write('Routing.prefixes', array('admin'));
とするとそれぞれ、/admin/users/ と /users/ でアクセスできるようになります。
■2-8) の設定
■2-9) キャッシュ・チェック
Controller や Model など一切通らずに View を返せるので高速です。
コメントにはありませんが、$casheAction には true だけなく、かなりきめ細やかな設定が可能です。
■2-10) ログ出力のエラータイプ
■2-11) セッション
■2-12) セキュリティ関連
■2-13) Assetファイル関連
■2-14) ACL
■2-15) タイムゾーン
■2-16) キャッシュ
以上!
次は core.php のほうです。
bootstrap.php よりも先に読み込まれます。
(bootstrap.php に戻るならこちら。)
(core.php の全訳ファイルはこちら。)
■2-1) 冒頭
/**
* これは、コアとなる設定ファイルです。
*
* Cake のコアとなる振る舞いを設定するのに使ってください。
*
* PHP 5
*
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
* Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
*
* Licensed under The MIT License
* ファイルの再配布には上記の著作権表示が必須です。
*
* @copyright Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
* @link http://cakephp.org CakePHP(tm) Project
* @package app.Config
* @since CakePHP(tm) v 0.2.9
* @license MIT License (http://www.opensource.org/licenses/mit-license.php)
*/
■2-2) デバッグレベル
/**メッセージのフラッシュというのは、Controller の flash() メソッドの動作のことです。
* CakePHP デバッグレベル:
*
* 本番モード:
* 0: エラーメッセージ、警告を画面に出さない。メッセージのフラッシュで redirect する。
*
* 開発モード:
* 1: エラー、警告が表示される。モデルキャッシュはリフレッシュされる。メッセージのフラッシュで一時停止する。
* 2: 上記1に加え、デバッグメッセージとSQL出力を完全に行う。
*
* flash() を使う場合、
* 本番モードではメッセージ表示して一定時間後にリダイレクトされますが、
* 開発モードではメッセージ表示後にクリックして次に進むようになります。
*/
Configure::write('debug', 2);
■2-3) エラーハンドラ
/**エラーが発生した場合のハンドラです。
* あなたのアプリケーションでエラーをハンドルするのに使うエラーハンドラを設定してください。
* デフォルトでは、ErrorHandler::handleError() が使われます。その場合、
* debug > 0 なら、エラーは Debugger を使って出力されます。
* debug = 0 なら、エラーは CakeLog を使ってログ出力されます。
*
* オプション:
*
* - `handler` - callback - エラーをハンドルするコールバック。呼び出し可能なタイプは何でも(無名関数でも)セットできる。
* - `level` - int - 捕捉したいエラーのレベル。
* - `trace` - boolean - ログファイルにエラーのスタックトレースを含めるか。
*
* @see ErrorHandler - エラーのハンドルや設定の詳細はこのクラスを参照してください。
*/
Configure::write('Error', array(
'handler' => 'ErrorHandler::handleError',
'level' => E_ALL & ~E_DEPRECATED,
'trace' => true
));
■2-4) 例外ハンドラ
/**例外が発生した場合のハンドラです。
* catch されなかった例外のための、例外ハンドラを設定してください。
* デフォルトでは、ErrorHandler::handleException() が使われます。その場合、その例外用の HTML ページが表示され、
* debug > 0 なら、Missing Controller のようなフレームワークのエラーが表示されます。
* debug = 0 なら、フレームワークのエラーは強制的に汎用的な HTTP エラーとして表示されます。
*
* オプション:
*
* - `handler` - callback - エラーをハンドルするコールバック。呼び出し可能なタイプは何でも(無名関数でも)セットできる。
* - `renderer` - string - catch されなかった例外を描画(render)する担当のクラス。
* 独自のクラスを指定するなら、そのクラスのファイルを app/Lib/Error の下に置くこと。
* このクラスは render メソッドを実装していなければなりません。
* - `log` - boolean - 例外をログに出力するか。
*
* @see ErrorHandler - 例外のハンドルや設定の詳細はこのクラスを参照してください。
*/
Configure::write('Exception', array(
'handler' => 'ErrorHandler::handleException',
'renderer' => 'ExceptionRenderer',
'log' => true
));
■2-5) charset エンコーディング
/**非常に重要です。全体的なエンコーディングの指定です。
* アプリケーション全体の charset エンコーディング。
*/
Configure::write('App.encoding', 'UTF-8');
■2-6) mod_rewrite使わない場合の設定
/**mod_rewrite を使わない/使えない場合の設定です。
* CakePHP が mod_rewrite を【使わずに】、CakePHP 的な URL を使いたいのであれば、下記の .htaccess を削除し、
*
* /.htaccess
* /app/.htaccess
* /app/webroot/.htaccess
*
* 下記の、App.baseUrl についてのコメントアウトを解除してください。
*/
//Configure::write('App.baseUrl', env('SCRIPT_NAME'));
使わないようにすると、生成される URL が /inde.php/コントローラ名/アクション名 のようになります。
mod_rewrite は使えるなら使ったほうがいいでしょう。
■2-7) 接頭辞ルート(Prefix routes)
/**ほとんどのControllerには、管理用の特別なアクションも必要になりうるという観点から、
* CakePHP の接頭辞ルート機能を使うなら、以下の定義のコメントアウトを解除してください。
*
* ここで定義した値により、ルートの名前が決まり、関連するコントローラのアクションが決まります。
*
* あなたのアプリケーションで使う接頭辞を配列で指定してください。admin や、その他、接頭辞が必要なルート用に使ってください。
*
* Routing.prefixes = array('admin', 'manager');
*
* 上記のように設定した場合、下記のような URL になります。
* `admin_index()` なら `/admin/controller名/index`
* `manager_index()` なら `/manager/controller名/index`
*
*/
//Configure::write('Routing.prefixes', array('admin'));
管理者用のURLが生成しやすくなっています。
UsersContoroller に admin_index() と index() の両方を実装した場合、
通常ならそれぞれ、/users/admin と /users/ でアクセスすることになりますが、
Configure::write('Routing.prefixes', array('admin'));
とするとそれぞれ、/admin/users/ と /users/ でアクセスできるようになります。
■2-8) の設定
/**
* アプリケーション全体でキャッシュ機能をオフにしたいなら、コメントアウトを解除してください。
*/
//Configure::write('Cache.disable', true);
■2-9) キャッシュ・チェック
/**キャッシュ・チェックを使うと、View をキャッシュすることができます。
* キャッシュ・チェック機能を有効にする。
*
* true にセットした場合、ビューのキャッシュを使うためには、
* あなたのコントローラ内にある public $cacheAction
* (キャッシュの設定を定義するもの)も使わなければなりません。
* あるコントローラ全体で有効にするためにコントローラの public $cacheAction = true を設定してもよいですし、
* 個々のアクションで $this->cacheAction = true と設定してもかまいません。
*/
//Configure::write('Cache.check', true);
Controller や Model など一切通らずに View を返せるので高速です。
コメントにはありませんが、$casheAction には true だけなく、かなりきめ細やかな設定が可能です。
■2-10) ログ出力のエラータイプ
/**
* log() 関数を使う場合の、デフォルトのエラータイプを定義してください。
* ログ出力と、デバッグの判別に使われます。今のところ PHP は LOG_DEBUG をサポートしています。
*/
define('LOG_ERROR', LOG_ERR);
■2-11) セッション
/**Session.checkAgent というのは、同一セッションなのに、途中で UserAgent が変わったら、強制的にセッションをクリアする機能です。
* セッションの設定。
*
* セッションの設定に使用する配列の設定値を定義してください。
* Session.defaults のキーは、セッションを使う際の、デフォルトのプリセット(初期設定群)を選ぶのに使い、
* なんらかの設定を宣言した際には、このデフォルト値を上書くことになります。
*
* ## オプション
*
* - `Session.cookie` - 使用する Cookie の名前。デフォルトは 'CAKEPHP'
* - `Session.timeout` - セッションの生存期間(分)。このタイムアウトは CakePHP によってハンドルされる。
* - `Session.cookieTimeout` - セッション Cookie の生存期間(分)。
* - `Session.checkAgent` - セッション開始時に user agent をチェックするか。
* 昔のIEや、Chromeのフレーム、Webブラウザを持つ装置とAJAX などを扱う必要がある場合に、
* false に設定したいということがありえる。
* - `Session.defaults` - あなたのセッションのベースとして使うデフォルトの設定。
* 4つの組み込み値が存在する。: php, cake, cache, database.
* - `Session.handler` - カスタムのセッションハンドラを有効にするために使うことができる。
* 呼び出し可能なものを配列で指定し、それは `session_save_handler` とともに使われる。
* このオプションを使うと、自動的に `session.save_handler` が ini 配列に追加される。
* - `Session.autoRegenerate` - この設定を有効にすると、セッションの自動更新がONになり、
* セッションIDが頻繁に変更されることになる。CakeSession::$requestCountdown 参照。
* - `Session.ini` - 追加でセットしたい ini 値の連想配列。
*
* Session.defaults の組み込みの値:
*
* - 'php' - あなたの php.ini で定義されている設定値を使う。
* - 'cake' - CakePHP の /tmp ディレクトリにセッションファイルを保存する。
* - 'database' - CakePHP のデータベースセッションを使う。
* - 'cache' - セッションの保存に Cache クラスを使う。
*
* カスタムのセッションハンドラを定義する場合は、その定義ファイルを /app/Model/Datasource/Session/<name>.php に保存してください。
* 必ず `CakeSessionHandlerInterface` をそのクラスに実装し、Session.handler に <name> をセットしてください。
*
* データベースセッションを使うためには、cake のシェルコマンド【cake schema create Sessions】を使って、
* app/Config/Schema/sessions.php スキーマを走らせてください。
*
*/
Configure::write('Session', array(
'defaults' => 'php'
));
■2-12) セキュリティ関連
/**
* CakePHP のセキュリティのレベル。
*/
Configure::write('Security.level', 'medium');
/**
* セキュリティのハッシュ生成に用いられるランダム文字列。
*/
Configure::write('Security.salt', 'DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi');
/**
* 文字列を encrypt/decrypt する際に使う、ランダムな数値(数値のみ)の文字列。
*/
Configure::write('Security.cipherSeed', '76859309657453542496749683645');
■2-13) Assetファイル関連
/**
* static な資産ファイル(js, css, images)に対して、最終更新日時のタイムスタンプを使うようにします。
* こうすることで、querystring パラメータにファイルの更新日時が追加されることになります。
* これはブラウザのキャッシュを無効にするのに便利な方法です。
*
* debug > 0 の場合にタイムスタンプを適用するなら true を指定してください。
* debug に関係なく常にタイムスタンプを適用するなら、'force' を指定してください。
*/
//Configure::write('Asset.timestamp', true);
/**
* CSS の出力で、コメント、空白、連続するタブなどを撤去することで圧縮します。
* これは a/var/cache ディレクトリが Web サーバからキャッシュ用に書き込むことが可能であることと、
* /vendors/csspp/csspp.php が必要です。
*
* 使用の際には、CSS へリンクする URL の頭に '/css/' ではなく '/ccss/' を付けるか、HtmlHelper::css() を使ってください。
*/
//Configure::write('Asset.filter.css', 'css.php');
/**
* 独自の JavaScript 圧縮ロジック(出力をハンドルするために webroot にスクリプトを配置するロジック)をプラグインとしてセットします。
* 下記のようにこのスクリプトの名前を指定してください。
*
* 使用の際には、JavaScript へリンクする URL の頭に '/js/' ではなく '/cjs/' を付けるか、JavaScriptHelper::link() を使ってください。
*/
//Configure::write('Asset.filter.js', 'custom_javascript_output_filter.php');
■2-14) ACL
/**
* CakePHP の ACL (アクセス・コントロール・リスト) 機能で使う、クラス名とデータベース。
*/
Configure::write('Acl.classname', 'DbAcl');
Configure::write('Acl.database', 'default');
■2-15) タイムゾーン
/**
* この行のコメントアウトを解除し、あなたのサーバのタイムゾーンに修正してください。
* エラーに関連する日時が正しくなります。
*/
//date_default_timezone_set('UTC');
■2-16) キャッシュ
/**
* 使用するキャッシュエンジンを指定します。APC が有効なら、それを使ってください。
* CLI を介して実行しているなら、APC はデフォルトでは無効です。
* それがこの場合で利用可能であり、有効になっているのか確認してください。
*
* 注: 'default' および、そのほかのアプリケーションキャッシュは app/Config/bootstrap.php の中で設定されていなければなりません。
* 利用可能なキャッシュエンジンについては boostrap.php 内のコメントと、その設定値をチェックしてください。
*/
$engine = 'File';
if (extension_loaded('apc') && function_exists('apc_dec') && (php_sapi_name() !== 'cli' || ini_get('apc.enable_cli'))) {
$engine = 'Apc';
}
// 開発モードなら、キャッシュはすぐに期限切れとなります。
// In development mode, caches should expire quickly.
$duration = '+999 days';
if (Configure::read('debug') >= 1) {
$duration = '+10 seconds';
}
// Memcache と APC とで衝突しないように、同じサーバで動く各アプリケーションに異なる接頭辞を付けます。
// Prefix each application on the same server with a different string, to avoid Memcache and APC conflicts.
$prefix = 'myapp_';
/**
* 一般的なフレームワークのキャッシュ用に使われるキャッシュの設定です。
* path 情報、オブジェクト・リスティング、翻訳キャッシュファイルはこの設定を使って保存されます。
*/
Cache::config('_cake_core_', array(
'engine' => $engine,
'prefix' => $prefix . 'cake_core_',
'path' => CACHE . 'persistent' . DS,
'serialize' => ($engine === 'File'),
'duration' => $duration
));
/**
* モデルとデータベースのキャッシュの設定です。
* このキャッシュ設定はコネクション内のスキーマ記述とテーブル・リスティングを保存するのに使います。
*/
Cache::config('_cake_model_', array(
'engine' => $engine,
'prefix' => $prefix . 'cake_model_',
'path' => CACHE . 'models' . DS,
'serialize' => ($engine === 'File'),
'duration' => $duration
));
以上!