haiju's 開発メモ

開発に必要な情報を自分用にメモ

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つのキーに対して複数の値を設定しているように見え

ると思うけど・・・(Φω|

管理方法は担当者と要相談ではあるけれど・・・

[参考サイト]

www.ci-guide.info

CodeIgniter/Config.php at develop · bcit-ci/CodeIgniter · GitHub

codeigniter.jp

codeigniter.com

qiita.com

programmercollege.jp

www.terakoya.work

magazine.tech-boost.jp

developer.mozilla.org