関数のリストとその内容(関数名だけでなく)をphpファイルから取得する必要があります。正規表現を使用しようとしましたが、多くの制限があります。すべてのタイプの関数を解析するわけではありません。たとえば、関数にifおよびforループステートメントがある場合は失敗します。
詳細:約100個のインクルードファイルがあります。各ファイルには、宣言された関数の数があります。一部のファイルには、他のファイルと重複する機能があります。したがって、特定のファイルからすべての関数のリストを取得し、このリストを配列内に配置してから、重複を削除するために一意の配列を使用します。トークナイザーについて読みましたが、宣言された関数をそのデータで取得する方法が本当にわかりません。私が持っているのはこれだけです:
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;
}
残念ながら、この関数は関数名のみをリストします。必要なのは、宣言された関数全体とその構造をリストすることです。
前もって感謝します..