2012-07-20 29 views
11

Ho sentito parlare di get_class_methods() ma c'è un modo in PHP per raccogliere una matrice di tutti i metodi pubblici da una particolare classe?PHP come elencare tutte le funzioni pubbliche della classe

+0

Uhm, 'get_class_methods ($ class)' * è * un modo per raccogliere una matrice di tutti i metodi pubblici di una particolare classe ... –

+0

se si desidera utilizzare 'get_class_meth ods' per recuperare SOLO metodi pubblici, deve essere usato al di fuori della classe .. – Federkun

+0

get_class_methods ($ class) restituisce tutti i metodi che sono pubblici o non hanno una parola chiave. Quindi, i metodi privati ​​non saranno restituiti – daslicht

risposta

1

Avete provato in questo modo?

$class_methods = get_class_methods(new myclass()); 

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

Penso che Kristian stia chiedendo specificatamente di elencare i metodi pubblici. – Stegrex

7

Dopo aver ottenuto tutti i metodi con get_class_methods($theClass) si può ciclo attraverso di loro con qualcosa di simile:

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

Come get_class_methods() è sensibile ambito-, è possibile ottenere tutte i metodi pubblici di una classe chiamando semplicemente la funzione al di fuori dell'ambito della classe:

Quindi, prendete questa classe:

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')); uscita volontà la seguente:

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

Durante una chiamata dall'interno del campo di applicazione della classe (new Foo;) sarebbe tornato:

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