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