如何在PHP类中判断变量是公共变量还是私有变量?

wat*_*nio 4 php

我确信如果我知道要搜索什么,我可以在PHP.net上找到它!

基本上我试图在类中循环遍历所有公共变量.

为了简化事情:

<?PHP 
class Person
{
  public $name = 'Fred';
  public $email = 'fred@example.com';
  private $password = 'sexylady';

  public function __construct()
  {
    foreach ($this as $key=>$val)
    {
      echo "$key is $val \n";
    }
  }
}

$fred = new Person; 
Run Code Online (Sandbox Code Playgroud)

应该只显示弗雷德的名字和电子邮件....

Row*_*wlf 6

使用反射.我已经修改了PHP手册中的一个例子来获得你想要的东西:

class Person
{
  public $name = 'Fred';
  public $email = 'fred@example.com';
  private $password = 'sexylady';

  public function __construct()
  {
    $reflect = new ReflectionObject($this);
    foreach ($reflect->getProperties(ReflectionProperty::IS_PUBLIC) as $prop) 
    {
      $propName = $prop->getName();
      echo $this->$propName . "\n";
    }
  }
}
Run Code Online (Sandbox Code Playgroud)