您可以使用以下命令获取当前定义的函数的列表get_defined_functions() http://php.net/get-defined-functions:
$arr = get_defined_functions();
var_dump($arr['user']);
内部函数位于索引处internal
而用户定义的函数位于索引处user
.
请注意,这将输出该调用之前声明的所有函数。这意味着如果你include() http://php.net/include具有功能的文件,这些也将在列表中。除了确保不这样做之外,没有其他方法可以分离每个文件的函数include() http://php.net/include调用之前的任何文件get_defined_functions() http://php.net/get-defined-functions.
如果您必须拥有每个文件的函数列表,则以下内容将尝试通过解析源来检索函数列表。
function get_defined_functions_in_file($file) {
$source = file_get_contents($file);
$tokens = token_get_all($source);
$functions = array();
$nextStringIsFunc = false;
$inClass = false;
$bracesCount = 0;
foreach($tokens as $token) {
switch($token[0]) {
case T_CLASS:
$inClass = true;
break;
case T_FUNCTION:
if(!$inClass) $nextStringIsFunc = true;
break;
case T_STRING:
if($nextStringIsFunc) {
$nextStringIsFunc = false;
$functions[] = $token[1];
}
break;
// Anonymous functions
case '(':
case ';':
$nextStringIsFunc = false;
break;
// Exclude Classes
case '{':
if($inClass) $bracesCount++;
break;
case '}':
if($inClass) {
$bracesCount--;
if($bracesCount === 0) $inClass = false;
}
break;
}
}
return $functions;
}
使用风险自负。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)