Преобразование объекта в набор переменных - PullRequest
0 голосов
/ 14 сентября 2010

Как бы вы конвертировали:

$Object->one;
$Object->two;

до:

$one;
$two;

Ответы [ 3 ]

2 голосов
/ 14 сентября 2010

Если вы используете цикл foreach для объекта, он будет перебирать видимые свойства без предоставления закрытых членов.

foreach ($object as $key => $value){
  $$key = $value;
}
2 голосов
/ 14 сентября 2010

Попробуйте: extract(get_object_vars($Object));

Это получит только публичные переменные. Если вы хотите приватный доступ, вам нужно вызвать его изнутри самого объекта.

2 голосов
/ 14 сентября 2010

Преобразуйте его в массив, затем extract() it.

Помните комментарий alcuadrado относительно инкапсуляции;это подчеркивается тем фактом, что extract() будет работать только с общедоступными переменными экземпляра (я обновил мой пример кода, чтобы показать это).

class TestClass
{
    public $one = 1;
    public $two = 2;
    private $three = 3;
}

$object = new TestClass;
extract((array) $object);

var_dump($one, $two, $three);

Вывод:

Notice: Undefined variable: third in...
int(1)
int(2)
NULL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...