Вы должны использовать ReflectionMethod. Вы можете использовать isProtected
и isPublic
, а также getModifiers
http://www.php.net/manual/en/class.reflectionmethod.php
http://www.php.net/manual/en/reflectionmethod.getmodifiers.php
$rm = new ReflectionMethod($this, $method); //first argument can be string name of class or an instance of it. i had get_class here before but its unnecessary
$isPublic = $rm->isPublic();
$isProtected = $rm->isProtected();
$modifierInt = $rm->getModifiers();
$isPublic2 = $modifierInt & 256; $isProtected2 = $modifierInt & 512;
Что касается проверки того, существует ли метод, вы можете сделать это, как сейчас, с помощью method_exists
или просто попытаться создать ReflectionMethod, и будет создано исключение, если его не существует. ReflectionClass
имеет функцию getMethods
, чтобы получить массив всех методов класса, если вы хотите использовать это.
Отказ от ответственности - Я не слишком хорошо знаю PHP Reflection, и, возможно, есть более прямой способ сделать это с помощью ReflectionClass или чего-то еще