PHP のプライベート変数を動的に参照したい
<?php class Hoge { CONST CIRCLE = 1; CONST TRIANGLE = 2; CONST BOX = 3; private $_fuga = array( self::CIRCLE => '丸', self::TRIANGLE => '三角', self::BOX => '四角', ); public function getMemberVariable($type, $key = null) { $array = $this->{'_' . "$type"}; // こういう書き方でいいみたいだ。 if (null === $key) { return $array; } return array_get($array, $key, ''); } } function array_get($array, $key, $default = null) { return is_array($array) && array_key_exists($key, $array) ? $array[$key] : $default; } $hoge = new Hoge(); var_dump($hoge->getMemberVariable('fuga')); var_dump($hoge->getMemberVariable('fuga', Hoge::CIRCLE)); array(3) { [1]=> string(3) "丸" [2]=> string(6) "三角" [3]=> string(6) "四角" } string(3) "丸"
表題のとおりのことがしたかった。
ただ、getMemberVariable という名前は明らかに間違ってるなー。
なんだろうなー。。