get_object_vars

(PHP 4, PHP 5, PHP 7, PHP 8)

get_object_vars返回由对象属性组成的关联数组

说明

get_object_vars(object $obj): array

返回由 obj 指定的对象中定义的属性组成的关联数组。

注意:

在 PHP 4.2.0 之前的版本中,如果在 obj 对象实例中声明的变量没有被赋值,则它们将不会在返回的数组中。而在 PHP 4.2.0 之后,这些变量作为键名将被赋予 null 值。

示例 #1 使用 get_object_vars()

<?php
class Point2D {
    var 
$x$y;
    var 
$label;

    function 
Point2D($x$y)
    {
        
$this->$x;
        
$this->$y;
    }

    function 
setLabel($label)
    {
        
$this->label $label;
    }

    function 
getPoint()
    {
        return array(
"x" => $this->x,
                     
"y" => $this->y,
                     
"label" => $this->label);
    }
}

// "$label" is declared but not defined
$p1 = new Point2D(1.2333.445);
print_r(get_object_vars($p1));

$p1->setLabel("point #1");
print_r(get_object_vars($p1));

?>

以上例程会输出:

 Array
 (
     [x] => 1.233
     [y] => 3.445
     [label] =>
 )

 Array
 (
     [x] => 1.233
     [y] => 3.445
     [label] => point #1
 )

参见 get_class_methods()get_class_vars()

参数

object

An object instance.

返回值

Returns an associative array of defined object accessible non-static properties for the specified object in scope. If a property have not been assigned a value, it will be returned with a null value.

更新日志

版本 说明
5.3.0 This function now returns NULL if the object isn't an object.
prior to 5.3.0 If the object isn't an object, then get_object_vars() would return false
prior to 4.2.0 If the variables declared in the class of which the object is an instance, have not been assigned a value, those will not be returned in the array

范例

示例 #2 Use of get_object_vars()

<?php

class foo {
    private 
$a;
    public 
$b 1;
    public 
$c;
    private 
$d;
    static 
$e;
   
    public function 
test() {
        
var_dump(get_object_vars($this));
    }
}

$test = new foo;
var_dump(get_object_vars($test));

$test->test();

?>

以上例程会输出:

array(2) {
  ["b"]=>
  int(1)
  ["c"]=>
  NULL
}
array(4) {
  ["a"]=>
  NULL
  ["b"]=>
  int(1)
  ["c"]=>
  NULL
  ["d"]=>
  NULL
}

参见