Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何获取特定文件夹中所有类的所有方法_Php - Fatal编程技术网

Php 如何获取特定文件夹中所有类的所有方法

Php 如何获取特定文件夹中所有类的所有方法,php,Php,我一直在阅读以下一些类似的问题: 但这些仅限于类名。我想知道是否有一种有效的方法(使用或其他方式)来检索特定文件夹中所有类中包含的所有方法 我最初的想法是,我可以使用遍历目录,然后使用创建每个目录的实例。或者,如果还没有声明每个类,我可以使用和的组合。。。但这两个想法似乎都不好,因为它们会消耗大量内存。有没有更有效的方法 编辑:我尝试使用 其中有几种方法是重复的。此外,它似乎没有捕获所有的方法,例如应该列出loginSubmit。这是全班同学的一份报告作为参考。而且我仍然不确定这是否是最

我一直在阅读以下一些类似的问题:

但这些仅限于类名。我想知道是否有一种有效的方法(使用或其他方式)来检索特定文件夹中所有类中包含的所有方法

我最初的想法是,我可以使用遍历目录,然后使用创建每个目录的实例。或者,如果还没有声明每个类,我可以使用和的组合。。。但这两个想法似乎都不好,因为它们会消耗大量内存。有没有更有效的方法

编辑:我尝试使用


其中有几种方法是重复的。此外,它似乎没有捕获所有的方法,例如应该列出
loginSubmit
。这是全班同学的一份报告作为参考。而且我仍然不确定这是否是最有效的方法?

那么为什么不
token\u get\u all
?@zerkms我不确定怎么做,因为在
T\u类
T\u函数
内部
T\u类
(不过只有第一级深度)是一种方法。@zerkms我用
T\u函数
使用链接中的示例进行了尝试,但无效。即使他们只搜索一个类名,而不是多个方法名,我似乎无法从中得到任何有用的信息。若你们愿意,我可以用失败的尝试来更新我的问题。若你们发布了你们的尝试,这会增加得到答案的机会。请参阅“帮助我使用此代码”与“为我编写所有内容”,那么为什么不
token\u get\u all
?@zerkms我不知道如何操作,因为在
T\u类
T\u函数
内部
T\u类
(不过只是第一级深度)是一种方法。@zerkms我用
T\u函数
使用链接中的示例进行了尝试,但无效。即使他们只搜索一个类名,而不是多个方法名,我似乎无法从中得到任何有用的信息。若你们愿意,我可以用失败的尝试来更新我的问题。若你们发布了你们的尝试,这会增加得到答案的机会。请参阅“帮助我编写此代码”与“为我编写所有内容”
function getDirectoryList($dir) {
    $dirList = $fileList = [];
    $iter = new FilesystemIterator($dir, FilesystemIterator::SKIP_DOTS);

    foreach ($iter as $file) {
        if ($file->isDir()) {
            $dirList[$file->getFilename()] = getDirectoryList($file->getPathname());
        } else {
            $fileList[$file->getFilename()] = $file->getFilename();
        }
    }

    uksort($dirList, 'strnatcmp');
    natsort($fileList);
    return $dirList + $fileList;
}

$path = '/var/www/html/dev/lib/framework/controllers';
$classes = getDirectoryList($path);
foreach ($classes as $class) {
    $file = $path . '/' . $class;
    echo $file . '<br />';
    $fp = fopen($file, 'r');
    $method = $namespace = $buffer = '';
    $i = 0;
    while (!feof($fp)) {
        $buffer .= fread($fp, 512);
        $tokens = token_get_all($buffer);

        if (strpos($buffer, '{') === false) {
            continue;
        }

        for (; $i<count($tokens); $i++) {
            if ($tokens[$i][0] === T_NAMESPACE) {
                for ($j=$i+1;$j<count($tokens); $j++) {
                    if ($tokens[$j][0] === T_STRING) {
                         $namespace .= '\\'.$tokens[$j][1];
                    } else if ($tokens[$j] === '{' || $tokens[$j] === ';') {
                         break;
                    }
                }
            }

            if ($tokens[$i][0] === T_FUNCTION) {
                for ($j=$i+1;$j<count($tokens);$j++) {
                    if ($tokens[$j] === '{') {
                        $method = $tokens[$i+2][1];
                    }
                }
            }
        }
        echo '<pre>';
        var_dump($method);
        echo '</pre>';
    }
}
/var/www/html/dev/lib/framework/controllers/AuthController.php
string(8) "register"
string(14) "registerSubmit"
string(14) "registerSubmit"
string(14) "registerSubmit"
string(14) "registerSubmit"
string(14) "registerSubmit"
string(14) "registerSubmit"
string(14) "registerSubmit"
string(14) "registerSubmit"
string(5) "login"
string(5) "login"
string(5) "login"
string(5) "login"
string(5) "login"
string(5) "login"
string(6) "logout"
string(6) "verify"
string(6) "verify"
string(6) "verify"
string(6) "verify"
string(12) "verifySubmit"
string(12) "verifySubmit"
string(12) "verifySubmit"
string(12) "verifySubmit"
string(12) "verifySubmit"
string(12) "verifySubmit"
string(12) "verifySubmit"