Блог Мазепина Василия

Пишу о том, что кажется интересным

Объект в массив, или еще один велосипед

2015-03-01 19:51 | Комментарии

Доброго времени суток, коллеги и гости…

В этом посте я хочу показать вам один из вариантов конвертирования обьекта в массив. Вариант не претендует на звание единственно правильным, но все таки он работает. Итак, начнем…
У нас есть объект со свойствами, который ну очень нужно привести к массиву. Обычное преобразование (array) $object не подойдет, так как ключи массива будут “засоряться” в случае, если это свойство объекта не публично.
Так вот, эта функция позволяет приводить к массиву абсолютно все объекты, независимо от типа объекта, и ограничений его свойств.
Взглянем:

Пример
1
2
3
4
5
6
7
8
9
10
function obj2array($object) {
    $ref = new ReflectionObject($object);
    $props = $ref->getProperties();
    $obj2array = array();
    foreach ($props as $prop) {
        $prop->setAccessible(true); //Открываем доступ к закрытым свойствам
        $obj2array[$prop->getName()] = $prop->getValue($object); // А теперь фокус))
    }
    return $obj2array;
}

Подробнее про исключения можно прочесть здесь, тут много “вкусностей”. Пользуйтесь на здоровье…

P.S.: С первым днем Весны!!

Комментарии