このコードが機能しないのはなぜですか? echo get('option_1')
nullを返します。
$settings= array(
'option_1' => 'text'
);
function get($name)
{
if ($name)
return $settings[$name];
}
echo get('option_1');
簡単な解決策は、$options
内部でグローバル変数にすることですget()
。
function get($name)
{
global $options;
if ($name)
return $options[$name];
}
グローバル状態が気に入らない場合は$options
、引数として作成してくださいget()
(ただし、これは単なる構文糖衣です...):
function get($name, $options)
{
if ($name)
return $options[$name];
}
$optionsはget関数の範囲外であるためです。次のいずれかを行う必要があります。
は関数$options
の範囲内ではありませんget
。
オブジェクト指向ソリューション:
class Options
{
private static $options = array(
'option_1' => 'text',
);
public static function get($name)
{
return isset(self::$options[$name]) ? self::$options[$name] : null;
}
}
echo Options::get('option_1');