Имеется следующий объект (поля могут меняться):
object(stdClass)[6]
public 'database_driver' => string 'pdo_mysql' (length=9)
public 'database_host' => string '127.0.0.1' (length=9)
public 'database_port' => int 3306
public 'database_name' => string 'default' (length=7)
public 'database_user' => string 'root' (length=4)
public 'test' =>
object(stdClass)[7]
public 'hello' => string 'world' (length=5)
И код:
public function get($parameter)
{
return $this->config->$parameter;
}
Если я передам в функцию просто переменную без "вложенности" ('database_driver'), то всё ок, если передам 'test', то тоже ок (вернётся вложенный объект), но если я передам 'test->hello' или 'test.hello', то получаю null, хотя хотелось бы увидеть 'world'. Как правильно обратиться к полю hello?
P.s. забыл уточнить, что объект указанный выше находится в $this->config
Не проверял, но скорей всего сработает такой метод:
public function get($parameter)
{
$methods = explode('->', $parameter);
return array_reduce($methods, function ($carry , $item) {
return $carry->$item;
}, $this->config);
}
соответственно нужно помнить, что ошибки в переданной строке могут привести к исключениям
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости