聞いたこと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 に答える