CakePHP 設定情報をYAMLで管理する

notoです。

CakePHPで設定情報を書く場合、Configure::writeをよく使うと思います。 しかし設定情報を書き変えたい場合、コードを書き変える必要があります。(コードに直書きしている場合)

YAMLに設定情報を定義することで、コードを書き換える必要がなく幸せになれるねって話です。

検証環境

  • CakePHP2.0.4
  • PHP5.3.8

設定ファイル(YAML)を作成する

app/Config以下にsetting.ymlを作成します。

YAMLの書き方はプログラマーのための YAML 入門 (初級編)が参考になると思います。

Spycを配置する

app/Vendor/以下にspycフォルダを作成し、spyc.phpを配置します。

ディレクトリ構造

1

2

3

4

app

 |__Vendor

    |__spyc

       |__spyc.php

設定ファイル(setting.yml)を元にConfigure::writeを行う

これでYAMLをパースする準備ができたので、Configure::writeを行う処理を実装します。

app/Config/bootstrap.php
1

2

3

4

5

6

7

8

9

10

<?php



App::import('Vendor', 'Spyc/Spyc');

if(file_exists(dirname(__FILE__) . DS . 'setting.yml')){

    $setting = Spyc::YAMLLoad(dirname(__FILE__) . DS . 'setting.yml');



    foreach ($setting as $key => $value) {

        Configure::write($key, $value);

    }

}

これで、setting.ymlに定義された情報がConfigure::readで取得できます。

この一連の処理はオープンソースのcroogoをかなり参考にしています。 croogoでは、データベースで管理されたデータをYAMLファイルとして出力して、それを読み込んでいます。

オープンソースは色々勉強になりますね。

Comments