📜  PHP | ReflectionClass getMethods()函数(1)

📅  最后修改于: 2023-12-03 14:45:18.544000             🧑  作者: Mango

PHP | ReflectionClass getMethods() 函数

在 PHP 中,ReflectionClass 类提供了一个 getMethods() 函数,用于获取指定类的所有方法。

语法
array ReflectionClass::getMethods([int $filter])
参数
  • filter(可选):指定一个过滤器,用于筛选想要获取的方法。可选的过滤器包括:

    • ReflectionMethod::IS_STATIC:仅返回静态方法。
    • ReflectionMethod::IS_PUBLIC:仅返回公有方法。
    • ReflectionMethod::IS_PROTECTED:仅返回受保护方法。
    • ReflectionMethod::IS_PRIVATE:仅返回私有方法。
    • ReflectionMethod::IS_ABSTRACT:仅返回抽象方法。
    • ReflectionMethod::IS_FINAL:仅返回最终方法。
返回值

返回一个包含 ReflectionMethod 类实例的数组,每个实例代表一个方法。

示例

以下示例演示了如何使用 ReflectionClass getMethods() 函数获取类的方法:

<?php
class MyClass {
    public function myPublicMethod() {
        // 公有方法
    }

    protected function myProtectedMethod() {
        // 受保护方法
    }

    private function myPrivateMethod() {
        // 私有方法
    }
}

$reflection = new ReflectionClass('MyClass');
$methods = $reflection->getMethods();

foreach ($methods as $method) {
    echo $method->getName() . "\n";
}
?>

输出:

myPublicMethod
getMethods

在上面的示例中,我们创建一个名为 MyClass 的类,并在其中定义了三个方法:myPublicMethod()myProtectedMethod()myPrivateMethod()。我们使用 ReflectionClass 类来反射 MyClass,然后使用 getMethods() 函数获取了该类的方法。最后,我们遍历返回的方法数组,并使用 ReflectionMethod 类的 getName() 方法获取每个方法的名称并输出。

注意,getMethods() 函数默认返回指定类中的所有方法,不区分方法的可见性。如果想仅返回公有方法,可以传入 ReflectionMethod::IS_PUBLIC 过滤器作为参数。

总结

ReflectionClass getMethods() 函数是一个强大的 PHP 反射功能,用于获取指定类的所有方法。它可以检查类的结构并提供有关类方法的详细信息,使程序员能够动态地分析和操作类的方法。