CodeIgniter3.xのユーザー設定ファイルで1つのキーに対して複数の値を持つには?について、考えた
そもそもPHPの連想配列では、JavaScriptのように1つのkeyに対して
複数のvalueを定義することはできかったような気がする(連想配列の入れ子は
持てるけど)し、CodeIgniter3.xのユーザーカスタムの設定ファイルで想定
されている定義方法は
$config['SOME'] = 'XXX';
とか
$config['ANY'] = array('abc' => 'conf1', 'def' => 'conf2');
とか
$config['makers'] = array('NEC', 'Fujitsu', 'Panasonic', 'SONY');
くらいなので、
「keyに対して複数の値を定義するには?」をコアソースを追いかけて読んでみて
足りない実装を案件に応じて足していくの沼が深くてこわいし、ハマると大変
だと思ったので、考え方を変える方向で対応してみる。
ではどうするのかということで、設定値の持ち方を以下のように変更してみた。
※下記コードはサンプルである。
[before]複数のショップコードを1つの配列の添字でまとめる
$config['SHOP_CODE'] = [
'01' => 'first',
'02' => ['second1', 'second2'], -------------- ここでエラー
'03' => 'third'
];
※単に連想配列の入れ子の利用はOKだが、キーに対して値を入れ子で
持てないだけでは?のような気がしてきた。
[after]ショップコードごとに配列の添字を持つ
$config['SHOP_CODE01'] = 'first';
$config['SHOP_CODE02'] = [
'abc' => 'second1'.
'def' => 'second2'
];
or
$config['SHOP_CODE02'] = ['second1', 'second2'];
$config['SHOP_CODE03'] = 'third';
// 値の取得
$shop_code01 = $this->config->item('SHOP_CODE01');
echo $shop_code01; // 'first'
$shop_code02 = $this->config->item('SHOP_CODE02');
echo $shop_code02['def']; // 'second2'
or
echo $shop_code02[1]; // 'second2'
とりあえず、これで1つのキーに対して複数の値を設定しているように見え
ると思うけど・・・(Φω|
管理方法は担当者と要相談ではあるけれど・・・
[参考サイト]
CodeIgniter/Config.php at develop · bcit-ci/CodeIgniter · GitHub