我想检查类中的局部变量是公共变量还是私有变量。 原因是创建这样的函数:
function ToArray() {
$arr = array();
foreach($this as $key => $val) {
$arr[$key] = $val;
}
return $arr;
}
此函数也返回私有字段,我不希望这样。我怎样才能在这里获得公共变量?
答案 0 :(得分:3)
$foo = new Foo();
$reflect = new ReflectionClass($foo);
$props = $reflect->getProperties(ReflectionProperty::IS_PUBLIC);
foreach ($props as $prop) {
print $prop->getName() . "\n";
}
var_dump($props);
答案 1 :(得分:0)
确保遵循一些使用私有变量的命名约定(例如我将它们添加到_
之前)
然后只返回那些不在其键的开头有_
的变量。
答案 2 :(得分:0)
要获取所有公共属性的列表,请调用get_object_vars()
。
(提示:由对象本身调用它将返回所有属性。)