С архитектурной точки зрения, я думаю, что отражения следует избегать, если это возможно, но посмотрите на ReflectionClass-> getMethods () , если вы думаете, что знаете, что делаете.
<?php
class A {
public function x() { }
public function y() { }
}
class B extends A {
public function a() { }
public function b() { }
public function x() { } // <-- defined here
}
$r = new ReflectionClass('B');
print_r($r->getMethods());
?>
Вы получите список методов, определенных B
и A
, вместе с классом, который его определил последним. Это вывод:
Array
(
[0] => ReflectionMethod Object
(
[name] => a
[class] => B
)
[1] => ReflectionMethod Object
(
[name] => b
[class] => B
)
[2] => ReflectionMethod Object
(
[name] => x
[class] => B
)
[3] => ReflectionMethod Object
(
[name] => y
[class] => A
)
)