PHP, как перечислять все публичные функции класса

Я слышал о get_class_methods(), но есть ли способ в PHP собрать массив всех общедоступных методов из определенного класса?

Ответ 2

Поскольку get_class_methods() зависит от области видимости, вы можете получить все общедоступные методы класса, просто вызвав функцию извне класса 'scope:

Итак, возьмите этот класс:

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')); выведет следующее:

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

В то время как вызов изнутри класса (new Foo;) вернется:

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

Ответ 3

После получения всех методов с помощью get_class_methods($theClass) вы можете пропустить их через что-то вроде этого:

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

Ответ 4

Вы пробовали этот путь?

$class_methods = get_class_methods(new myclass());

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