2013-06-20 11 views
5

Ich habe eine Klasse wieAbrufen von nur Eigenschaften des Kindes Klasse

class parent{ 
    public $foo; 
} 

class child extends parent{ 
    public $lol; 

    public function getFields() 
    { 
     return array_keys(get_class_vars(__CLASS__)); 
    } 
} 

und ich bekomme ein Array mit den Kinder Eigenschaften in ihm ...

array('foo','lol'); 

gibt es eine einfache Lösung bekomme nur die Eigenschaften von der Kindklasse?

Antwort

3

versuchen, diesen Ansatz (pseudo PHP-Code :) enthalten)

class parent{ 
    public $foo; 

    public function getParentFields(){ 
     return array_keys(get_class_vars(__CLASS__)); 
    } 
} 

class child extends parent{ 
    public $lol; 

    public function getFields() 
    { 
     $parentFields = parent::getParentFields(); 
     $myfields = array_keys(get_class_vars(__CLASS__)); 

     // just subtract parentFields from MyFields and you get the properties only exists on child 

     return the diff 
    } 
} 

Die Idee, dass Eltern mit :: getParentFields() Funktion, um zu bestimmen, welche Felder war übergeordnete Felder aus. Es ist große Lösung bis gestimmt und favorited

+1

Ich fing an, an der gleichen Sache zu arbeiten, +1. Möglicherweise muss eine Rekursion hinzugefügt werden. Sie können auch die Elternfunktion überspringen und 'get_class_vars()' direkt in 'get_parent_class()' OP verwenden: verwenden Sie 'array_diff' um die Kindfelder zu bekommen – Jessica

+0

Oder get_class_vars (Eltern) könnte einfach funktionieren :), ich auch faul, es zu versuchen :) –

+0

@ KemalDağ 'get_class_vars (parent)' funktioniert nicht, weil PHP es als String-Literal '' Eltern '' betrachtet, wenn Sie es an eine Funktion übergeben. – Achrome

Verwandte Themen