解析 PHP 中的类、函数和参数

2023-12-21

我想创建一个函数,它接收一个参数,该参数保存 PHP 文件的路径,然后解析给定的文件并返回如下所示的内容:

class NameOfTheClass
   function Method1($arg1, $arg2, $arg2)
   private function Method2($arg1, $arg2, $arg2)
   public function Method2($arg1, $arg2, $arg2)

abstract class AnotherClass
   function Method1($arg1, $arg2, $arg2)
   private function Method2($arg1, $arg2, $arg2)
   public function Method2($arg1, $arg2, $arg2)

function SomeFunction($arg1, $arg2, $arg3)

此函数应返回给定文件中存在的所有类、方法和函数,以及所有已定义的标识符(抽象、公共、私有、受保护、静态、扩展、接口等)。

我的第一个想法是使用正则表达式来做到这一点,但是这些注释的表现非常糟糕,即: /* this function returns(max(salary)) */ 如果我想正确支持范围,就会变得相当复杂。

另一种可能的解决方案是使用以下内置 PHP 函数:

get_declared_classes
get_declared_interfaces
get_defined_functions
get_class_methods

然而,这些函数不允许我查看定义类/方法/函数的文件,因此它不是很有用。

我相信 Tokenizer 扩展可以解决我的问题,但是我以前从未使用过这个扩展。


如果您使用 PHP 5,反射API http://php.net/manual/en/book.reflection.php是你的工具。

Example:

$class = new ReflectionClass("NameOfTheClass");
$methods = $class->getMethods();
foreach($methods as $m) {
    print $m->name;
    $m->isPrivate() ? print "Private" : print "";
    $m->isPublic() ? print "Public" : print "";
    $params = $m->getParameters();
    foreach($params as $p) {
        print $p->getName();
        }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解析 PHP 中的类、函数和参数 的相关文章

随机推荐