如何从PHP文件中提取所有函数名称?
该文件有许多功能看起来或多或少如下。正则表达式是最好的方法吗?
public function someFunction(
private function anotherOne(
答案 0 :(得分:4)
您可以使用正则表达式找到它们:
# The Regular Expression for Function Declarations
$functionFinder = '/function[\s\n]+(\S+)[\s\n]*\(/';
# Init an Array to hold the Function Names
$functionArray = array();
# Load the Content of the PHP File
$fileContents = file_get_contents( 'thefilename.php' );
# Apply the Regular Expression to the PHP File Contents
preg_match_all( $functionFinder , $fileContents , $functionArray );
# If we have a Result, Tidy It Up
if( count( $functionArray )>1 ){
# Grab Element 1, as it has the Matches
$functionArray = $functionArray[1];
}
答案 1 :(得分:2)
如果PHP文件在语法上是正确的并且只包含函数,则可以将get_defined_functions
的结果存储到数组中(无论如何,返回一个数组)。
include_once
PHP文件,将最新的get_defined_functions
与之前的数组进行比较(如array_diff
)。 array_diff
返回的结果是PHP文件中定义的函数。
如果是对象声明,虽然您可以使用函数get_class_method
,但上述操作不起作用,但它无法返回受保护和私有方法。
或强>
ob_start();
highlight_string(file_get_contents('class.php'));
$html = ob_get_contents();
ob_end_clean();
$dom = new DomDocument;
$dom->loadHTML($html);
您可以拥有一个DOM列表,其中包含可以过滤的样式属性。
答案 2 :(得分:1)
你可以为grep编写另一个PHP文件,或者如果你有Linux或Mac OS X,你可以使用类似的东西:
grep -P "function\s+\w" myfile.php
答案 3 :(得分:1)
如果您的PHP文件包含一个类,如上所述,那么在包含文件之后,您可以使用PHP的get_class_methods
函数,它只需要类名,它将返回方法提到的课程。有关详细信息,请参阅get_class_methods。
但是,如果您确定类但不知道它的名称,那么您可以使用第一个get_declared_classes函数来获取类,然后您可以将上述函数用于那些方法类。