不会。get_object_vars() 只返回已声明且已初始化的 public 属性,未初始化的 public 属性(如仅声明未赋值)不会被包含;它绕过 __get(),仅读取真实存在的属性槽位,不包含未赋值属性,即使其类型为 public。

不会。`get_object_vars()` 在 PHP 7.5(及所有支持该函数的版本)中,只返回已声明且已初始化的 public 属性;未初始化的属性(即声明了但未赋值,仍为 null 或未进入对象状态)被视为不可访问,不会出现在返回数组中。
哪些属性会被包含
仅满足以下全部条件的 public 属性才会被返回:
- 在类中明确定义为
public(非private或protected) - 已在对象实例化过程中完成赋值(哪怕赋值为
null、''、0等 falsy 值) - 不依赖
__get()魔术方法动态提供 —— 该函数绕过魔术方法,只读取真实存在的属性槽位
未初始化属性的典型表现
例如:
通过 REST API 管理 Kibana 保存的对象(仪表板、Lens 可视化等)。适用于:① 以编程方式创建、更新、删除仪表板和 Lens 可视化。
$u = new User();
var_dump(get_object_vars($u));
输出为:['email' => 'test@example.com'] —— $name 因未初始化(PHP 中等价于未设置),被完全忽略。
对比其他方式更清晰
-
(array)$obj会把未初始化的 public 属性也转成键,值为null -
get_class_vars('User')返回的是类定义时的默认值(含未实例化的 public 属性),与实例无关 - 若需捕获所有声明过的 public 属性(无论是否初始化),必须结合反射或手动维护属性清单
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










