Ali*_*xel 6 php parsing code-analysis tokenize
我想创建一个函数,它接收一个保存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)
此函数应返回给定文件中存在的所有类,方法和函数以及所有已定义的标识符(abstract,public,private,protected,static,extends,interfaces,...).
我的第一个尝试是使用正则表达式来执行此操作,但是这些表现非常糟糕的注释,即:/*此函数返回(max(salary))*/并且如果我想要正确支持范围,则变得非常复杂.
另一种可能的解决方案是使用以下内置PHP函数:
get_declared_classes
get_declared_interfaces
get_defined_functions
get_class_methods
但是这些函数不允许我查看定义类/方法/函数的文件,因此它不是很有用.
我相信Tokenizer扩展是我的问题的解决方案,但我之前从未使用过此扩展.
如果您使用的是PHP 5,那么Reflection API就是您的工具.
例:
$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();
        }
}
| 归档时间: | 
 | 
| 查看次数: | 4433 次 | 
| 最近记录: |