Function list of php file

function, list, php

Solution

You can get a list of currently defined function by using `get_defined_functions()`:

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

Internal functions are at index `internal` while user-defined function are at index `user`.

Note that this will output all functions that were declared previous to that call. Which means that if you `include()` files with functions, those will be in the list as well. There is no way of separating functions per-file other than making sure that you do not `include()` any file prior to the call to `get_defined_functions()`.

If you must have the a list of functions per file, the following will attempt to retrieve a list of functions by parsing the source.

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;
}

Use at your own risk.

Problem

How to get list of functions that are declared in a php file

Original source