2016-03-29 26 views
1

如何在类中从类中遍历所有公共变量?遍历所有公共变量并将NULL值转换为空字符串

如何获取公共变量?

private function translate_null_values_to_strings(){ 
    foreach($this->public_vars as $key => $value){ 
     if(is_null($this->$key)) $this->$key = ''; 
    } 
} 
+0

http://stackoverflow.com/questions/3309320/php-get-classes - 公共变量 – vaso123

+1

['ReflectionClass :: getProperties'](http://php.net/manual/en/reflectionclass.getproperties.php)'(ReflectionProperty :: IS_PUBLIC)' –

+0

我会避免这样做..有东西错误在您的应用程序中,如果对象有一些属性设置为您不想以后的值.. –

回答

3

使用Reflection。我修改从PHP手册为例来得到你想要的:

class Test 
{ 
    public $public1 = 'public 1'; 
    public $public2 = ''; 
    public $public3 = 'public 3'; 
    private $private1 = 'private 1'; 

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

$ob = new Test(); 

输出:

public1 --> public 1 
public2 --> 
public3 --> public 3 
+1

完美答案bro +1。 – GuRu