18

聞いたことget_class_methods()がありますが、PHP で特定のクラスからすべてのパブリック メソッドの配列を収集する方法はありますか?

4

4 に答える 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 に答える