Intereting Posts
Пять уникальных случайных чисел из подмножества Запись в файл XML с помощью fopen в WordPress Как загрузить представление на основе состояния в контроллере (Codeigniter) mysqli: может ли он подготовить несколько запросов в одном выражении? Symlink не работает на моей локальной машине jQuery Validation – Невозможно вызвать метод «вызов» неопределенного PHP DOM получает элементы из первого элемента ul Удаление нежелательного адреса электронной почты из URL-адреса PHP – нужен cron для обработки обратного сайта при регистрации пользователя … (или процесс fork) Метод построения эхо-возврата; Как исправить это: «Предупреждение: mysql_num_rows () ожидает, что параметр 1 будет ресурсом, boolean задан в //"? Каков наилучший способ использования API Twitter через PHP? Запрос Mysql с использованием значений в JSONArray Woocommerce Mini Cart Widget цена продукта Как добавить к этому обновлению инструкцию SQL и сделать выпадающий список тоже для нее

get_object_vars () против переноса в массив

Существуют ли различия между get_object_vars($obj) и (array) $obj ?

Оба, похоже, возвращают общедоступные свойства объекта.

Что лучше?

Это не совсем так.

get_object_vars чувствителен к области видимости и возвращает все видимые свойства, кроме статических свойств, независимо от их вязкости. Если вы вызываете это из-за пределов своего класса, вы будете получать только публичные члены; из производного класса вы получите защищенных и открытых членов; и из самого класса вы получите всех участников. Клавиши массива представляют имена свойств и не искажаются.

Листинг (array) возвращает, по крайней мере, на PHP 5.3.0 все свойства объекта, общедоступные и другие. Имя свойств искажается в соответствии с уровнем защиты:

  • public : не искаженный, идентичный именам свойств
  • protected : имя ключа для свойства начинается с *
  • private : имя ключа для свойства начинается с имени класса

Для получения дополнительной информации см. Листинг в массиве .

Надеюсь, вы сможете лучше понять, какой из них наиболее подходит для вашей ситуации.

Функция get_object_vars() является более четким способом достижения желаемого эффекта. Хотя приведение его в массив также является решением, это поведение может измениться в более поздних версиях PHP.

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

Лучше то, что вам действительно нужно. get_object_vars () не показывает закрытых и защищенных членов. См. Этот комментарий в руководстве для примера.