Динамически выбирая переменную из класса - PullRequest
0 голосов
/ 31 января 2010

Я пытаюсь получить данные из класса в php5, где данные в классе являются частными, а вызывающая функция запрашивает часть данных из класса. Я хочу иметь возможность получать этот конкретный фрагмент данных из частных переменных без использования оператора case.

Я хочу сделать что-то с эффектом:

public function get_data($field)
{
    return $this->(variable with name passed in $field, i.e. name);
}

Ответы [ 2 ]

1 голос
/ 31 января 2010

Вы можете просто использовать

class Muffin
{
   private $_colour = 'red';

   public function get_data($field)
   {
      return $this->$field;
   }
}

Тогда вы можете сделать:

$a = new Muffin();

var_dump($a->get_data('_colour'));
0 голосов
/ 31 января 2010
<?php
public function get_data($field)
{
    return $this->{$field};
}
?>

Возможно, вы захотите взглянуть и на магическую функцию __get (), например ::

<?php
class Foo
{
        private $prop = 'bar';
        public function __get($key)
        {
                return $this->{$key};
        }
}

$foo = new Foo();
echo $foo->prop;
?>

Я был бы осторожен с этим типом кода, так как он может позволить раскрыть слишком много внутренних данных класса.

...