检查变量是否为公共php

检查变量是否为公共php,php,variables,Php,Variables,我想检查类中的局部变量是公共的还是私有的。 原因是要创建如下函数: function ToArray() { $arr = array(); foreach($this as $key => $val) { $arr[$key] = $val; } return $arr; } 这个函数还返回私有字段,我不希望这样。如何在这里只获取公共变量?请确保对私有变量遵循一些命名约定,就像我在它们前面加上的一样_ 然后,只需返回那些键开头没有u的变量。要获取所有公共属性的列

我想检查类中的局部变量是公共的还是私有的。 原因是要创建如下函数:

function ToArray() {
  $arr = array();
  foreach($this as $key => $val) {
    $arr[$key] = $val;
  }
  return $arr;
}

这个函数还返回私有字段,我不希望这样。如何在这里只获取公共变量?

请确保对私有变量遵循一些命名约定,就像我在它们前面加上的一样_


然后,只需返回那些键开头没有u的变量。

要获取所有公共属性的列表,请调用get_object_vars

提示:由对象本身调用它将返回所有属性。

From


你不能为每一美元做这件事……是的,我可以,我也可以。对象上的Foreach循环遍历对象中的属性。你自己试试吧。$this上的Foreach还返回私有和受保护的属性。语言中有关键字,因此我们不需要这样的约定。它只不过是为了访问而不是类型,而且人们普遍认为现代语言中不需要匈牙利符号,所以不用麻烦了……这并不是普遍建议的:下划线是一种风格选择,而不是语言强制的,和不是定义或检查变量范围的防弹方法。$key=$prop->getName$value=$this->$key;谢谢。当你从其他来源复制文本时,你必须链接回原始来源,否则看起来像是剽窃。
$foo = new Foo();

$reflect = new ReflectionClass($foo);
$props   = $reflect->getProperties(ReflectionProperty::IS_PUBLIC);

foreach ($props as $prop) {
    print $prop->getName() . "\n";
}

var_dump($props);