Phalconで設定ファイルを読み込む

 

Phalconでの各種フォーマットで記述された設定ファイルの取り扱い方。

概要

  • PhalconではPhalcon\Configで設定を扱う
  • 各種フォーマット用のアダプターが用意されているので読み込む時はそれを使う

読み込み方

ファイルを読み込む場合

ファイルから読み込む場合はアダプターの引数に読み込むファイルパスを渡すだけでOK。
以下はini形式のファイルを読み込む例。

$config = new Phalcon\Config\Adapter\Ini('path/config.ini');

大抵の形式には標準で対応しているけど、YAMLは何故か標準では提供されておらずincubatorでライブラリが提供されている。

形式 アダプター 備考
INI Phalcon\Config\Adapter\Ini
JSON Phalcon\Config\Adapter\Json
PHP Phalcon\Config\Adapter\Php 配列をreturnするPHPのファイルを読み込ませる
YAML Phalcon\Config\Adapter\Yaml incubator

直接PHPの配列をPhalcon\Configのオブジェクトにする場合

配列から直接オブジェクトを作る場合はアダプターを使わずPhalcon\Configの引数に配列を渡せばOK。

$config = new Phalcon\Config(array(
    "database" => array(
            "adapter" => "Mysql",
            "host" => "localhost",
            "username" => "scott",
            "password" => "cheetah",
            "dbname" => "test_db"
    ),
    "phalcon" => array(
            "controllersDir" => "../app/controllers/",
            "modelsDir" => "../app/models/",
            "viewsDir" => "../app/views/"
    )
 ));

※Phalcon公式サイトのリファレンスからコピペ

使い方

参照方法はこんな感じ。

$config = new Phalcon\Config(array(
    'hoge' => 123,
    'huge' => array(4,5,6)
));

echo $config->hoge; // 123

// 配列の場合はこんな感じ
echo $config->huge[0]; // 4

// foreachで配列っぽく扱うこともできる
foreach ($config->huge as $value) {
    echo $value;   // 4 5 6
}

複数の設定を読み込んでマージすることもできる。

$config1 = new Phalcon\Config(array(
    'hoge' => 'AAA',
    'huge' => 'BBB'
));

$config2 = new Phalcon\Config(array(
    'huge' => 'CCC',
    'piyo' => 'DDD'
));

$config1->merge($config2);

foreach ($config1 as $key => $value) {
    echo $key . '=>' . $value . "\n";
}

【実行結果】
$ php config.php
hoge=>AAA
huge=>CCC
piyo=>DDD

同じキーが存在する場合は引数に入れた方が優先されて上書きされるので同じキーがある場合は注意が必要。