Ответ 1
Это не совсем так.
get_object_vars
чувствителен к области видимости и возвращает все видимые свойства, кроме статических свойств, независимо от их вязкости. Если вы вызываете это из-за пределов своего класса, вы будете получать только публичные члены; из производного класса вы получите защищенных и открытых членов; и из самого класса вы получите всех участников. Ключи массива представляют имена свойств и не искажаются.
Приведение (array)
возвращает, по крайней мере, на PHP 5.3.0, все свойства объекта, общедоступные и другие. Имя свойств искажается в соответствии с уровнем защиты:
-
public
: не искажен, идентичен именам свойств -
protected
: имя ключа для свойства начинается с*
-
private
: имя ключа для свойства начинается с имени класса
Для получения дополнительной информации см. литье в массив.
Надеюсь, вы сможете лучше понять, какой из них наиболее подходит для вашей ситуации.