php get_object_vars
介绍get_object_vars()
在PHP中,使用get_object_vars()可以获取对象的属性值,返回一个包含对象所有属性键值对的数组。
使用get_object_vars()
通过get_object_vars(),可以方便地获取一个对象的所有属性值,可以用在对象序列化、属性复制等场合。
使用get_object_vars()的语法为:
$obj_vars = get_object_vars($object);
其中,$object表示要获取属性值的对象,其类型必须为对象。如果传入的参数不是对象,则会返回false。
示例
以下示例演示了如何通过get_object_vars()获取对象属性值:
class Person { public $name; protected $age; private $height; function __construct($name, $age, $height) { $this->name = $name; $this->age = $age; $this->height = $height; }}// 创建对象$person = new Person('Tom', 18, 180);// 获取属性值$obj_vars = get_object_vars($person);// 输出结果print_r($obj_vars);输出结果如下:Array ( [name] => Tom [age:protected] => 18 [height:Person:private] => 180)
可以看到,get_object_vars()返回了一个包含对象属性键值对的关联数组,其中,属性名为键,属性值为值。需要注意的是,由于PHP不支持直接访问对象的protected和private属性,因此在打印结果时,属性名前面会加上访问修饰符。
注意事项
需要注意的是,get_object_vars()只能获取对象的属性值,而不能获取对象的方法。如果要获取对象的所有成员,包括属性和方法,可以使用ReflectionClass类。
此外,get_object_vars()返回的是一个包含对象属性键值对的数组,也就是说,只包含属性值,不包含属性名。如果需要获取属性名,可以通过array_keys()函数获取:
$obj_vars = get_object_vars($person);$keys = array_keys($obj_vars);print_r($keys);输出结果如下:Array ( [0] => name [1] => age [2] => height)
总结
使用get_object_vars()可以方便地获取对象的属性值,需要注意的是,仅能获取属性值,且获取的结果中不包含私有属性名。