PHP:get_class_vars()与get_object_vars()

d-_*_*_-b 12 php

关于PHP,有什么区别:

  1. get_class_vars()
  2. get_object_vars()

ohm*_*ama 20

get_class_vars()获取class_name get_object_vars()采用$ object变量

它们的功能相似:

get_class_vars()将公开默认公共变量(或者在类中调用private或protected) get_object_vars()将公开当前公共变量(如果在类对象中调用,则公开变量)

两者都不会暴露方法.

  • 那么一个用于定义(类),另一个用于实例(对象)? (2认同)

Dan*_*uis 15

从手册页get_class_varsget_object_vars手册页中可以看到,get_class_vars获取类属性的默认值,并get_object_vars获取对象属性的当前值.

此外,get_class_vars获取一个字符串(即类的名称),而get_object_vars获取一个对象.

class Example
{
  public $var = 123;
}

$e = new Example();
$e->var = 456;

var_dump(get_class_vars("Example"));
/*
array(1) {
  ["var"]=>
  int(123)
}
*/

var_dump(get_object_vars($e));
/*
array(1) {
  ["var"]=>
  int(456)
}
*/
Run Code Online (Sandbox Code Playgroud)


sma*_*8dd 5

还有一件事:

get_object_vars()没有看到静态变量,但看到在运行时创建的变量!
get_class_vars()会看到静态变量,但不会看到运行时创建的新变量,例如。在构造函数中:

public function __construct() {$this->newval = "newval";}
Run Code Online (Sandbox Code Playgroud)