Проверка видимости метода в PHP - PullRequest
7 голосов
/ 05 июня 2010

Есть ли способ проверить, был ли метод класса объявлен как закрытый или открытый?

Я работаю над контроллером, где URL-адрес сопоставлен с методами в классе, и я хочу запускать методы только в том случае, если они определены как публичные.

Ответы [ 3 ]

8 голосов
/ 05 июня 2010

Чтобы расширить ответ Сафраза Ахмеда (поскольку у «Отражения» нет документации), это быстрый пример:

class foo {
    private function bar() {
        echo "bar";
    }
}

$check = new ReflectionMethod('foo', 'bar');

echo $check->isPrivate();
8 голосов
/ 05 июня 2010

Для этого вы можете использовать расширение отражение , учтите следующее:

ReflectionMethod :: isPrivate
ReflectionMethod :: isProtected
1018 ** :: ReflectionMethod isPublic * * 1021 ReflectionMethod :: isStatic

3 голосов
/ 06 июня 2010

Давайте посмотрим с другой стороны. Вам не нужно знать уровень видимости метода. Вы должны знать, можете ли вы вызвать метод. 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;
}
...