Есть ли способ проверить, был ли метод класса объявлен как закрытый или открытый?
Я работаю над контроллером, где URL-адрес сопоставлен с методами в классе, и я хочу запускать методы только в том случае, если они определены как публичные.
Чтобы расширить ответ Сафраза Ахмеда (поскольку у «Отражения» нет документации), это быстрый пример:
class foo { private function bar() { echo "bar"; } } $check = new ReflectionMethod('foo', 'bar'); echo $check->isPrivate();
Для этого вы можете использовать расширение отражение , учтите следующее:
ReflectionMethod :: isPrivate ReflectionMethod :: isProtected 1018 ** :: ReflectionMethod isPublic * * 1021 ReflectionMethod :: isStatic
Давайте посмотрим с другой стороны. Вам не нужно знать уровень видимости метода. Вы должны знать, можете ли вы вызвать метод. http://lv.php.net/is_callable
if(is_callable(array($controller, $method))){ return $controller->$method(); }else{ throw new Exception('Method is not callable'); return false; }