Php 在zf2中获取完整目录

Php 在zf2中获取完整目录,php,zend-framework2,Php,Zend Framework2,大家好,我做了一个函数 function getDirContents($dir, &$results = array()){ $files = scandir($dir); foreach($files as $key => $value){ $path = realpath($dir.DIRECTORY_SEPARATOR.$value); if(!is_dir($path)) { $results[] = $path; } else if(is_dir($path) &am

大家好,我做了一个函数

function getDirContents($dir, &$results = array()){
$files = scandir($dir);

foreach($files as $key => $value){
$path = realpath($dir.DIRECTORY_SEPARATOR.$value);
if(!is_dir($path)) {
$results[] = $path;
} else if(is_dir($path) && $value != "." && $value != "..") {
getDirContents($path, $results);
$results[] = $path;
}
}

return $results;
}
我现在就这样打电话给你

$value = $this->getDirContents("/var/www/staging/public/files/rgerger");
通过我的控制器,我可以获得文件夹的全部详细信息,我指的是包含所有内容的目录和子目录。。
scandir处于启用状态,仅提供目标文件夹下的文件夹,该文件夹仅被扫描,但不提供子文件夹到最后的内容。

您需要将递归方法调用的结果分配回调用方

我未经检验的例子

function getDirectoryContents($dir)
{
    $files = [];

    if (is_dir($dir)) {
        foreach(scandir($dir) as $key => $fileName) {

            $filePath = realpath($dir . DIRECTORY_SEPARATOR . $fileName);

            if ($fileName == '.' || $fileName == '..') {
                continue;
            }

            if (is_dir($filePath)) {
                $files[] = getDirectoryContents($filePath);
            } else {
                $files[] = $fileName;
            }
        }
    }
    return $files;
}

根据我的评论,您还可以使用SPL,这是PHP内置的OOP解决方案,用于迭代文件系统。

我建议您检查SPL或。这些是专门为迭代文件系统目录而设计的内置类。