代码之家  ›  专栏  ›  技术社区  ›  watermanio

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

php
  •  4
  • watermanio  · 技术社区  · 16 年前

    如果我知道要搜索什么,我肯定可以在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; 
    

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

    2 回复  |  直到 13 年前
        1
  •  6
  •   Rowlf    16 年前

    使用 Reflection . 我已经修改了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";
        }
      }
    }
    
        2
  •  0
  •   Thiago Belem    16 年前

    http://php.net/manual/en/function.get-class-vars.php

    您可以使用get_class_vars()函数:

    <?php
    class Person
    {
        public $name = 'Fred';
        public $email = 'fred@example.com';
        private $password = 'sexylady';
    
        public function __construct()
        {
            $params = get_class_vars(__CLASS__);
            foreach ($params AS $key=>$val)
            {
                echo "$key is $val \n";
            }
        }
    }
    ?>
    
    推荐文章