2012-07-20 16 views
11

Słyszałem o get_class_methods(), ale czy istnieje sposób w PHP, aby zebrać tablicę wszystkich publicznych metod z konkretnej klasy?PHP, jak wyświetlić wszystkie publiczne funkcje klasy

+0

Uhm, 'get_class_methods (klasa $)' * jest * sposobem na zebranie tablicy wszystkich publicznych metod danej klasy ... –

+0

jeśli chcesz użyć 'get_class_meth ods', aby pobrać TYLKO publiczne metody, musi być użyty poza klasą. – Federkun

+0

get_class_methods (klasa $) zwraca wszystkie metody, które są publiczne lub nie zawierają słów kluczowych. Tak więc żadne prywatne metody nie zostaną zwrócone. – daslicht

Odpowiedz

1

Czy próbowałeś w ten sposób?

$class_methods = get_class_methods(new myclass()); 

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

Myślę, że Kristian prosi o podanie publicznych metod. – Stegrex

7

Po zdobyciu wszystkich metod z get_class_methods($theClass) można pętli nich coś takiego:

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

Jak get_class_methods() jest zakres wrażliwych, można dostać wszystko publiczne metody klasy po wywołaniu funkcji spoza zakresu klasy:

więc wziąć tę klasę:

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')); wyjście będzie następujący:

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

Podczas połączenia z wnętrza zakresu klasy (new Foo;) zwróci:

array 
    0 => string 'bar' (length=3) 
    1 => string 'baz' (length=3) 
    2 => string '__construct' (length=11) 
Powiązane problemy