Holen Sie sich alle public deklarierten Methoden in der Klasse, nicht geerbt

Was ich will ist das array aller public-Methoden, und NUR öffentliche, die, von den untersten Klassen in der vererbungsstruktur. Zum Beispiel:

class MyClass {  }

class MyExtendedClass extends MyClass {  }

class SomeOtherClass extends MyClass {  }

Ist, und von innen von MyClass möchte ich, um alle ÖFFENTLICHEN Methoden von MyExtendedClass und SomeOtherClass.

Dachte ich, ich verwenden können, Reflexion-Klasse dies zu tun, aber wenn ich das mache, bekomme ich auch Methoden aus der MyClass, und ich will nicht, um Sie zu bekommen:

$class = new ReflectionClass('MyClass');
$methods = $class->getMethods(ReflectionMethod::IS_PUBLIC);

Gibt es eine Möglichkeit, dies zu tun? Oder die einzige Lösung, die ich haben in dieser situation nur heraus zu filtern, die Ergebnisse der Reflexions-Klasse?

  • Ich denke, Sie müssen sich selbst eine Hilfsfunktion, bekommt alle Oberklassen und bekommt Ihre öffentlichen Methoden.
  • Sie sind nicht öffentlich-Methode in diese Klasse ....
  • Nicht direkt, aber man kann leicht filtern der Ergebnisse, da die Namen der Klassen, zu denen Sie gehören, sind da.
  • stackoverflow.com/questions/9471883/...
  • Warum nicht einfach die Kreuzung von MyClass' öffentliche Funktionen und diejenigen, die Derivate?
  • Sie verwenden könnten: $methods = array_filter($class->getMethods(ReflectionMethod::IS_PUBLIC), function ($o) use ($class) {return $o->class == $class->getName();});

InformationsquelleAutor user1615069 | 2012-10-10
Schreibe einen Kommentar