3.4.3 Configurationクラス

CakePHPで設定しなければいけないことはそれほど多くありませんが、アプリケーションの中に独自のルールを設定できるようにしておくと、便利なことがあります。これまではカスタム設定に関する変数や定数をいくつかのファイルの中に定義していたかもしれませんが、そうすると、値が必要になるたびに、毎回、設定ファイルをincludeしなくてはならなくなります。

CakePHPの新しいConfigureクラスを使うと、アプリケーション、またその実行時に必要な特定の値の保存と取り出しに使うことができます。このクラスの中には何でも保存でき、コード内のあらゆる場所で使用できるので、CakePHPのMVCパターンを崩してしまう誘惑には注意しましょう。Configureクラスの主要な目標は、各変数を集中保管して、各オブジェクトから使用できるようにすることです。“設定より規約”(convention over configuration)を遵守するようにして、MVC構造を壊してしまうことがないようにしましょう。

このクラスは singleton として動作し、メソッドは静的なコンテキストとして、アプリケーション内のどこからでも呼ぶことができます。

<?php Configure::read('debug'); ?>
  1. <?php Configure::read('debug'); ?>

3.4.3.1 Configureのメソッド

3.4.3.1.1 write

write(string $key, mixed $value)

write()を使って、アプリケーションの設定データを保存します。

Configure::write('Company.name','株式会社ピザ');
Configure::write('Company.slogan','体と心にピザを');
  1. Configure::write('Company.name','株式会社ピザ');
  2. Configure::write('Company.slogan','体と心にピザを');

$keyのパラメータとして、ドットを使っていることに注意してください。このドットを使って、論理グループごとに設定を整理することができます。

Configure::write(
    'Company',array('name'=>'株式会社ピザ','slogan'=>'体と心にピザを')
);
  1. Configure::write(
  2. 'Company',array('name'=>'株式会社ピザ','slogan'=>'体と心にピザを')
  3. );

Configure::write('debug', $int)を使って、デバッグと運用モードをすぐに切り替えることができます。AMFやSOAPなどとの連携の際、デバッグ情報のためにパースに問題が生じるような場合に特に便利に使うことができます。

3.4.3.1.2 read

read(string $key = 'debug')

アプリケーションから、環境設定データを読み込むために使います。デフォルトでは、CakePHPの重要なデバッグ値が設定されています。keyが指定されると、そのデータが返されます。上のwrite()の例を使うと、返される次のようなデータを取得できます。

Configure::read('Company.name');    //出力は: '株式会社ピザ'
Configure::read('Company.slogan');  //出力は: '体と心にピザを'
 
Configure::read('Company');
 
//出力は: 
array('name' => '株式会社ピザ', 'slogan' => '体と心にピザを');
  1. Configure::read('Company.name'); //出力は: '株式会社ピザ'
  2. Configure::read('Company.slogan'); //出力は: '体と心にピザを'
  3. Configure::read('Company');
  4. //出力は:
  5. array('name' => '株式会社ピザ', 'slogan' => '体と心にピザを');

3.4.3.1.3 delete

delete(string $key)

アプリケーションの環境設定から情報を削除するのに使います。

Configure::delete('Company.name');
  1. Configure::delete('Company.name');

3.4.3.1.4 load

load(string $path)

指定したファイルから環境設定をloadするためにこのメソッドを使ってください。

// /app/config/messages.php:
<?php
$config['Company']['name'] = '株式会社ピザ';
$config['Company']['slogan'] = '体と心にピザを';
$config['Company']['phone'] = '555-55-55';
?>
 
<?php
Configure::load('messages');
Configure::read('Company.name');
?>
  1. // /app/config/messages.php:
  2. <?php
  3. $config['Company']['name'] = '株式会社ピザ';
  4. $config['Company']['slogan'] = '体と心にピザを';
  5. $config['Company']['phone'] = '555-55-55';
  6. ?>
  7. <?php
  8. Configure::load('messages');
  9. Configure::read('Company.name');
  10. ?>

ファイルの中では、 $config 配列のキーと配列のペアで設定されます。ファイル内のその他の変数は、 load() では無視されます。

3.4.3.1.5 version

version()

現在のアプリケーションのCakePHPのバージョンを返します。

3.4.3.2 CakePHPコアの環境設定変数

Configureクラスは、CakePHPの一連の環境設定変数を管理するために使用されます。これらの変数は、app/config/core.phpの中にあります。下記では、各変数の詳細とCakePHPアプリケーションにどのように影響するかを説明します。

環境変数設定 説明
debug CakePHPのデバッグ出力を変更します。

0 = 運用モード。出力しません。
1 = エラーと警告を表示します。
2 = エラー、警告、SQLを表示します。
3 = エラー、警告、SQL、コントローラの完全なdumpを表示します。
App.baseUrl CakePHPでApacheのmod_rewriteを使用しないのであれば、この定義をアンコメントしてください。.htaccessファイルを削除するのも忘れないようにしてください。
Routing.admin CakePHPの管理者ルート(admin routes)を活用する場合にはアンコメントします。使用したい管理者routeの名前をこの変数に設定してください。詳細な説明が後にもあります。
Cache.disable trueに設定すると、サイト全体のキャッシュが無効になります。
Cache.check trueに設定すると、ビューのキャッシュが有効になります。有効にするためにコントローラ内の設定も必要ですが、この変数によって、設定を調べるようになります。
Session.save CakePHPがどのセッションストレージを使用するかを指定します。

php = PHPのデフォルトのセッションストレージを使用します。
cake = セッションデータを /app/tmp の中に保存します。
database = セッションデータをデータベーステーブルの中に保存します。/app/config/sql/sessions.sqlにあるSQLファイルを使用して、テーブルを設定しておいてください。
Session.table セッション情報を保存するテーブル名(接頭辞[prefix]は含めません。)
Session.database セッション情報を保存するデータベース名。
Session.cookie セッションをtrackするのに用いられるクッキー名。
Session.timeout セッションタイムアウトの基本時間を秒で指定します。実際の時間は、Security.levelに依存します。
Session.start trueに設定すると、セッションが自動的に始まります。
Session.checkAgent falseに設定すると、リクエストの間にユーザエージェントが変更されていないかをCakePHPのセッションが確認しなくなります。
Security.level CakePHPのセキュリティレベルを設定します。'Session.timeout'で設定されたセッションタイムアウトの基本時間に、この設定による値をかけたものが最終的な値になります。

有効な値:
'high' = x 10
'medium' = x 100
'low' = x 300
Security.salt セキュリティを考慮したハッシングのために利用されるランダムな文字列です。
Acl.classname, Acl.database CakePHPのACL(アクセスコントロールリスト)機能で利用される定数です。詳細は Access Control Lists の章を見てください。

キャッシュの設定は、core.php にもあります。この点については後の章にもありますので参考にしてください。

Configureクラスは、サイトの動作中に、コアの環境設定を読み書きすることができます。たとえば、アプリケーションの中で、ある特定の部分だけデバッグ設定を変えたいというような場合などに特に便利です。

3.4.3.3 Configuration定数

ほとんどの環境設定はConfigureで行いますが、CakePHPが実行時に使用する定数がほかにもあります。

定数 説明
LOG_ERROR エラーに関する定数。エラーログどデバッグに用いられます。現在、PHPはLOG_DEBUGをサポートしています。