2016-03-29 4 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私はあなたが欲しいものを得るためにPHPのマニュアルからの例を変更しました-public-variables – vaso123

+1

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

+0

私はこれをやることを避けます。あなたのアプリケーションで間違っている場合は、オブジェクトがいくつかのプロパティを持っている場合は、後でしたくない値が設定されています.. –

答えて

3

Reflectionを使用してください。

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

完璧な仲間+1。 – GuRu

関連する問題