Lazuli

らずり

Zend\Config\Reader\Ini セクションの継承について

Zend1 では Zend_Config_Ini クラスでセクションの継承が出来て便利だった。
セクションの継承とはこういうやつ。

[production]
database.table = "hoge"
database.host = "xxx.xxx.xxx"

[production:develop]
database.host = "localhost"
<?php
$ini = new Zend_Config_Ini('/path/to/inifile', 'develop');

echo $ini->database->table  // prints hoge
echo $ini->database->host   // prints localhost


ところが Zend2 になってセクションの継承がサポートされなくなってしまった。
よってこのように使わなくてはならない。

; common.ini
database.table = "hoge"
; production.ini
database.host = "xxx.xxx.xxx"
@include = "common.ini"
; develop.ini
database.host = "localhost"
@include = "common.ini"
<?php
$ini = new \Zend\Cofnfig\Reader\Ini();
$ini->fromFile('/path/to/develop.ini');

echo $ini['database']['table'];  // prints hoge
echo $ini['database']['host'];   // prints localhost


微妙だ。管理するファイルが増えるのもなんかなぁ。
最近はインクルードするのがモダンなんだろうか。