2012-07-20 42 views
11

He oído hablar de get_class_methods(), pero ¿hay alguna manera en PHP para reunir una matriz de todos los métodos públicos de una clase en particular?PHP cómo enumerar todas las funciones públicas de la clase

+0

Uhm, 'get_class_methods ($ class)' * es * una forma de reunir una matriz de todos los métodos públicos de una clase particular ... –

+0

si quieres usar 'get_class_meth ods' para recuperar SOLO los métodos públicos, se debe usar fuera de clase ... – Federkun

+0

get_class_methods ($ class) devuelve todos los métodos que son públicos o no tienen una palabra clave. Por lo tanto, no se devolverán los métodos privados – daslicht

Respuesta

1

¿Has probado de esta manera?

$class_methods = get_class_methods(new myclass()); 

foreach ($class_methods as $method_name) { 
    echo "$method_name\n"; 
} 
+2

Creo que Kristian está pidiendo específicamente que se enumeren los métodos públicos. – Stegrex

7

Después de conseguir todos los métodos con get_class_methods($theClass) puede recorrer a través de ellos con algo como esto:

foreach ($methods as $method) { 
    $reflect = new ReflectionMethod($theClass, $method); 
    if ($reflect->isPublic()) { 
    } 
} 
8

Como get_class_methods() margen sensible, se puede obtener toda los métodos públicos de una clase simplemente llamando a la función desde fuera del alcance de la clase:

lo tanto, tomar esta clase:

class Foo { 
    private function bar() { 
     var_dump(get_class_methods($this)); 
    } 

    public function baz() {} 

    public function __construct() { 
     $this->bar(); 
    } 
} 

var_dump(get_class_methods('Foo')); dará salida a lo siguiente:

array 
    0 => string 'baz' (length=3) 
    1 => string '__construct' (length=11) 

Mientras una llamada desde el interior del ámbito de la clase (new Foo;) retornaría:

array 
    0 => string 'bar' (length=3) 
    1 => string 'baz' (length=3) 
    2 => string '__construct' (length=11) 
Cuestiones relacionadas