# get_object_vars

(PHP 4, PHP 5, PHP 7)

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

### 说明

get_object_vars ( object `$obj` ) : array

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

> Note:

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

Example #1 使用 get_object_vars()

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

        function Point2D($x, $y)
        {
            $this->x = $x;
            $this->y = $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.233, 3.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

### 范例

Example #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
    }

### 参见

- get_class_methods() - 返回由类的方法名组成的数组
- get_class_vars() - 返回由类的默认属性组成的数组