С архитектурной точки зрения, я думаю, что следует избегать отражения, если это возможно, но взгляните на 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
)
)
Я не знаю метода, кроме сложного отражения. Для чего вам это нужно? –
Можете ли вы сообщить мне, почему вы это делаете? Это для документации или для использования в приложении? –
Мне нужно добавить все общедоступные методы в контроллерах в мою таблицу разрешений. Я использую cakePHP, и их компонент ACL не работает с существующей моделью, которую у меня есть. – macha