2016-10-25 3 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

Это будет делать в достаточно современных версиях PHP:

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)); 
Смежные вопросы