@Kyber_Ded

Почему get_object_vars() возвращает пустоту, а раньше все срабатывало?

Есть такой ArrayObject в переменной obj
object(ArrayObject)
  private 'storage' => 
    array
      'id' => '1'
      'name' => 'a'


Раньше вызывал get_object_vars($obj) и все работало. В какой-то момент перестало работать, стало возвращать пустой массив. Если вызываю getArrayCopy() - то все снова работает. Что могло случиться и почему так происходит?
  • Вопрос задан
  • 112 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
https://github.com/php/php-src/blob/PHP-7.4/UPGRADING
- SPL:
. Calling get_object_vars() on an ArrayObject instance will now always return
the properties of the ArrayObject itself (or a subclass). Previously it
returned the values of the wrapped array/object unless the STD_PROP_LIST
flag was specified.

Начиная с PHP 7.4 функция get_object_vars для ArrayObject возвращает свойства самого объекта, а не обёрнутого в него массива. А, поскольку, свойство storage приватное, то оно данной функцией не возвращается.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
toxa82
@toxa82
Возвращаемые значения:
Возвращает ассоциативный массив нестатических свойств объекта object, доступных в данной области видимости.
Замечание:
Неинициализированные свойства считаются недоступными и поэтому не включаются в массив.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы