Я хочу преобразовать объект в массив в PHP, но только его общие поля. Я уже нашел ответы на вопрос о том, каковы объекты объекта для массива в PHP, но все они преобразуют все поля (также частные). Мне нужны только публичные поля - как я могу это достичь?Преобразование объекта в массив PHP - только публичные поля
ответ
С помощью get_object_vars()
Пример:
$object_to_arr = get_object_vars($obj);
get_object_vars()
будет возвращать только доступные и не-статические свойства объекта.
Edit:
Если вы работаете в этом непосредственно на $this
тогда он будет возвращать private
свойства. Это связано с тем, что для самого класса доступны даже свойства private
.
Чтобы обойти эту проблему, сделать что-то вроде:
$i = $this;
$publics_only = function() use ($i) {
return get_object_vars($i);
};
return $publics_only();
Для свойств, которые находятся вне сферы вызывающего использовать Reflection API для проверки видимости: http://php.net/manual/en/class.reflectionfunction.php, а затем преобразовать объект в массив с помощью жонглирования http://www.php.net/manual/en/language.types.type-juggling.php#language.types.typecasting
$arry = (array) $obj;
Reflection API довольно неудобно использовать, и в основном полезно получить свойства, которые * вне * объема вызывающего, IMHO. Поскольку здесь цель состоит в том, чтобы получить видимые свойства, Reflection кажется немного излишним. –
@kuroi neko Спасибо, что указали это, ответ обновился. –
- 1. Преобразование объекта PHP в массив
- 2. PHP Преобразование объекта в массив
- 3. Публичные свойства или публичные поля?
- 4. Преобразование объекта ответа в массив в PHP
- 5. Преобразование вложенного объекта в массив в PHP
- 6. Преобразование объекта в массив PHP в JavaScript
- 7. Преобразование скрытого поля в массив PHP
- 8. Являются ли публичные поля злыми, если только?
- 9. Преобразование объекта в массив с PHP
- 10. Parse.com PHP API Преобразование объекта в массив
- 11. PHP unit test преобразование объекта в массив
- 12. Преобразование одного объекта в массив
- 13. Преобразование объекта в массив
- 14. Преобразование объекта в массив
- 15. Преобразование объекта в массив/матрицу?
- 16. публичные переменные в PHP
- 17. Преобразование объекта в массив angularjs
- 18. Преобразование многомерного объекта в массив
- 19. Преобразование объекта в массив/строку
- 20. Преобразование объекта JSON в массив?
- 21. AngularJS Преобразование объекта в массив
- 22. объекта в массив - быстрое преобразование
- 23. Преобразование объекта в массив строк?
- 24. Преобразование объекта JSON в массив
- 25. JavaScript, преобразование объекта в массив
- 26. Преобразование объекта в массив объектов
- 27. JSON: Преобразование объекта в массив
- 28. Преобразование объекта в многомерный массив
- 29. Преобразование строки в MySQL таблицы поля в массив в PHP
- 30. Преобразование объекта в массив с использованием только jq и bash
Спасибо, я пропустил этот. –
Я бы добавил serialize, если OP пытается сохранить такие свойства где-то http://www.php.net/manual/en/function.serialize.php – ILikeTacos
@AlanChavez это то же самое с любым массивом. Это зависит от OP, чтобы обрабатывать массив необходимым образом. – Ryan