2010-06-05 15 views
6

¿Hay alguna manera de comprobar si un método de clase ha sido declarado como privado o público?Comprobación de la visibilidad método en PHP

estoy trabajando en un controlador donde la url se asigna a los métodos de la clase, y sólo desea que active los métodos si están definidos como públicos.

Respuesta

7

Extender respuesta Safraz Ahmed 's (ya que carece de la documentación Reflexión) este es un ejemplo rápido:

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

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

echo $check->isPrivate(); 
+0

Eso es bueno, además, 1 :) – Sarfraz

2

deja mirada desde el otro lado. Realmente no necesita saber el nivel de visibilidad del método. Necesita saber si puede llamar al método. 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; 
} 
+0

Esta es la solución más natural a la vez proporcionada. – erisco

+2

sí, muy buena sugerencia. La cuestión es sin embargo que todos los métodos están dentro de la clase actual, por lo que todo será exigible, pública o privada, así que estoy bien, creando mi propia visibilidad aquí sólo alowing para ejecutar los métodos públicos de la URL. Pero una parte de la historia es que también descubrí que '__destruct' y tal debe ser público, y era, por tanto, exigible por URL, por lo que ahora me he ido de un combo con un prefijo método (action_). – phobia

Cuestiones relacionadas