我对以下代码有疑问:
<?php
class testClass
{
public $settings;
public function __construct()
{
$this->settings = array(
'paths' => array(
'protocol' => 'http'
)
);
}
public function getSomething()
{
$string = "settings['paths']['protocol']";
echo $this->{$string}; /***** Line 19 *****/
}
}
$obj = new testClass;
$obj->getSomething(); // Outputs a 'undefined' notice
echo '<br />';
echo $obj->settings['paths']['protocol']; // Outputs http as expected
?>
这是我正在使用的代码的一个非常基本的示例,实际代码更高级,但产生的输出/错误是相同的。
基本上,类构造函数使用设置数组填充属性。getSomething() 方法将数组路径分配给变量,然后尝试由echo $this->{$string};
代码检索该变量。
当我写时:$obj->getSomething();
我收到以下错误:
Notice: Undefined property: testClass::$settings['paths']['protocol'] in /test.php on line 19
如果我编写以下代码echo $obj->settings['paths']['protocol']
,我会得到预期的http
我不确定为什么这不起作用!如果有人能提供任何启示,将不胜感激。
谢谢