2016-10-25 5 views
0

私はクラスを作成していますが、クラスプロパティの一部ではなくすべてをダンプするメソッドを作成したいと思います。PHPで特定のクラスプロパティを効率的にダンプする

私は怠け者だと私はそうのように、キーはプロパティの名前であることと、配列を書き出すように感じることはありません。

private $prop1; 
private $dontdumpthis; 
private $prop2; 
public method dump() { 
    return array(
    'prop1' => $this->prop1, 
    'prop2' => $this->prop2, 
    ... 

私はcompact()を見て:

public method dump() { 
    return compact(
    $this->prop1, 
    ... 

しかし、それは空の配列を返します。

プロパティの名前と値を指定する簡単な方法はありますか?

+0

は、あなたがしたいんプロパティ間の共通点は何ですダンプとあなたがしないもの?命名規則はありますか?それとも、あなたはそれらをひとつずつ名前でリストアップしますか? – deceze

+0

@deceze共通性はなく、任意のリストです。私はそれらを一つずつリストアップします。 – user151841

答えて

2

public function dump() { 
    static $props = ['prop1', 'prop2']; 
    return array_reduce($props, function ($r, $n) { return $r + [$n => $this->$n]; }, []); 
} 

また、これはあまりにもやる:

static $props = ['prop1', 'prop2']; 
return array_intersect_key(get_object_vars($this), array_flip($props)); 
関連する問題