Мне нужно получить список функций с их содержимым (не только именем функции) из 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;
}
к сожалению, эта функция перечисляет только имена функций ..
что мне нужно, это перечислить всю объявленную функцию с ее структурой ..
так есть идеи?
спасибо заранее ..