Функциональный список php файла

Как получить список функций, которые объявляются в php файле

9
задан zumrasha 4 February 2010 в 06:44
поделиться

3 ответа

Вы можете получить список определенных в настоящее время функций, using get_defined_functions () :

$arr = get_defined_functions();
var_dump($arr['user']);

Внутренние функции находятся по индексу internal , а пользовательские функции - по индексу user .

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

Используйте на свой страх и риск.

18
ответ дан 4 December 2019 в 06:19
поделиться

Вы можете использовать функцию get_defined_functions () , чтобы получить все функции, определенные в вашем текущем скрипте.

См .: http://www.php.net/manual/en/function.get-defined-functions.php

Если вы хотите получить функции, определенные в другом файле, вы можете попробовать использовать http://www.php.net/token_get_all вот так:

$arr = token_get_all(file_get_contents('anotherfile.php'));

Затем вы можете пройти через цикл, чтобы найти токены функций с определенными символами. Список токенов можно найти http://www.php.net/manual/en/tokens.php

9
ответ дан 4 December 2019 в 06:19
поделиться

включите в файл и попробуйте следующее:

$functions = get_defined_functions();
print_r($functions['user']);
-1
ответ дан 4 December 2019 в 06:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: