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

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

Да, вы можете взглянуть на классы / методы отражения.

http://php.net/manual/en/book.reflection.php и http://www.php.net/manual/en/reflectionclass.getmethods.php

 $class = new ReflectionClass('Apple'); $methods = $class->getMethods(ReflectionMethod::IS_PUBLIC); var_dump($methods); 

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

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

 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) 

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

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

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

 $class_methods = get_class_methods(new myclass()); foreach ($class_methods as $method_name) { echo "$method_name\n"; }