Есть ли какой-либо способ проверить, был ли метод класса объявлен как частный или общедоступный?
Я работаю над контроллером, где URL отображается на методах в классе, и я только хочу инициировать методы, если они определяются как общественность.
Вы можете использовать отражение , рассмотрите следующие варианты:
ReflectionMethod :: isPrivate
ReflectionMethod :: isProtected
ReflectionMethod :: isPublic
ReflectionMethod :: isStatic
Чтобы расширить ответ Safraz Ahmed (поскольку Reflection не хватает документации), вот быстрый пример:
class foo {
private function bar() {
echo "bar";
}
}
$check = new ReflectionMethod('foo', 'bar');
echo $check->isPrivate();
Посмотрим с другой стороны. Вам действительно не нужно знать уровень видимости метода. Вам нужно знать, можете ли вы вызвать метод. 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;
}