
Выяснилось, что в предложенном мной виде функция objectToArray неуниверсальна ☹️
Для объекта встроенного класса (например,
"Встроенность" можно проверить через ReflectionClass::isInternal, а можно просто подавить ошибку и обработатьрелигии ситуации 😉
В чистом виде get_object_vars применима к любым объектам и всегда возвращает массив публичных нестатических свойств. У объектов встроенных классов кроме
Обновлённый вариант функции с рефлексией https://3v4l.org/2mtXC и без https://3v4l.org/RqDHu.
Для объекта встроенного класса (например,
DateTimeImmutable
или stdClass
) вызов Closure::call
бросит ошибку уровня E_WARNING
и вернёт null
, так как замыкание нельзя привязать к области видимости встроенного класса."Встроенность" можно проверить через ReflectionClass::isInternal, а можно просто подавить ошибку и обработать
null
, выбирайте по В чистом виде get_object_vars применима к любым объектам и всегда возвращает массив публичных нестатических свойств. У объектов встроенных классов кроме
stdClass
он, как правило, пустой.Обновлённый вариант функции с рефлексией https://3v4l.org/2mtXC и без https://3v4l.org/RqDHu.