次のコードに問題があります。
<?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
なぜこれが機能しないのかわかりません!! 誰かが光を当てることができれば、それは大いにありがたいです。
ありがとう