Обращение к свойству через переменную

139
16 ноября 2018, 18:40

Имеется следующий объект (поля могут меняться):

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

Answer 1

Не проверял, но скорей всего сработает такой метод:

public function get($parameter)
{
    $methods = explode('->', $parameter);
    return array_reduce($methods, function ($carry , $item) {
        return $carry->$item;
    }, $this->config);
}

соответственно нужно помнить, что ошибки в переданной строке могут привести к исключениям

READ ALSO
Проблема с запуском minion - Kohana3 // Cron

Проблема с запуском minion - Kohana3 // Cron

Не могу уже 3-й день настроить модуль и корректно запуститься, помогите пожалуйста с решением проблемы

137
PHP Regex | Вырезка значений из тега span

PHP Regex | Вырезка значений из тега span

Прошу помочь с вырезкой значения из этого html кода:

114
Как передать переменную с js в php

Как передать переменную с js в php

В js есть переменная

151
Как построить 301 редирект в .htaccess

Как построить 301 редирект в .htaccess

Я хочу обработать условие, если вдруг на сайте когда либо будет ссылка вида:

122