у меня есть проблема с следующий фрагмент кода:PHP OOP проблема с динамическими многомерными массивами
<?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
Я не знаю, почему это не работает! ! Если кто-то может пролить свет, это было бы весьма признательно.
Благодаря
Знаете ли вы об ошибках в этом вопросе? Спасибо за объяснение, я понимаю проблему сейчас! –
Что именно вы хотите сделать? Пример кода вряд ли имеет смысл, так как вы на самом деле не используете его так, я полагаю. – deceze
Ну, см. Обновление. – deceze