Проверка видимости метода в PHP

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

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

8
задан phobia 5 June 2010 в 18:55
поделиться

3 ответа

Вы можете использовать отражение , рассмотрите следующие варианты:

ReflectionMethod :: isPrivate
ReflectionMethod :: isProtected
ReflectionMethod :: isPublic
ReflectionMethod :: isStatic

9
ответ дан 5 December 2019 в 07:33
поделиться

Чтобы расширить ответ Safraz Ahmed (поскольку Reflection не хватает документации), вот быстрый пример:

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

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

echo $check->isPrivate();
9
ответ дан 5 December 2019 в 07:33
поделиться

Посмотрим с другой стороны. Вам действительно не нужно знать уровень видимости метода. Вам нужно знать, можете ли вы вызвать метод. 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;
}
4
ответ дан 5 December 2019 в 07:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: