【发布时间】:2009-09-12 11:56:36
【问题描述】:
我想创建一个函数,它接收一个包含 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)
此函数应返回给定文件中存在的所有类、方法和函数以及所有定义的标识符(抽象、公共、私有、受保护、静态、扩展、接口...)。
我的第一个技巧是使用正则表达式来执行此操作,但是这些表达式在 cmets 中表现得非常糟糕,即:/* 这个函数返回(max(salary))*/ 如果我想正确支持范围,它会变得非常复杂。
另一个可能的解决方案是使用以下内置 PHP 函数:
get_declared_classes
get_declared_interfaces
get_defined_functions
get_class_methods
但是这些函数不允许我看到定义类/方法/函数的文件,因此它不是很有用。
我相信 Tokenizer 扩展是我的问题的解决方案,但是我以前从未使用过这个扩展。
【问题讨论】:
-
我无法帮助您解决您的特定问题,因为我也从未使用过 Tokenizer。你没有提到你用这个做什么,但是像 phpDoc 这样的东西能满足你的需要吗?
-
我需要的基本上是一个精简的 phpDoc 版本,没有 phpDoc 的麻烦,基本上我只想了解任何给定文件的所有可用方法和参数 - 这将超过对我来说足够了。
标签: php parsing tokenize code-analysis