我听说过,get_class_methods()
但是 PHP 中有没有办法从特定类中收集所有公共方法的数组?
问问题
27121 次
4 回答
34
是的,你可以,看看反射类/方法。
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);
于 2012-07-20T08:40:44.820 回答
19
由于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)
于 2012-07-20T08:44:06.427 回答
8
获得所有方法后,get_class_methods($theClass)
您可以通过以下方式循环它们:
foreach ($methods as $method) {
$reflect = new ReflectionMethod($theClass, $method);
if ($reflect->isPublic()) {
}
}
于 2012-07-20T08:40:57.823 回答
1
你有没有尝试过这种方式?
$class_methods = get_class_methods(new myclass());
foreach ($class_methods as $method_name) {
echo "$method_name\n";
}
于 2012-07-20T08:38:48.553 回答