В чем моя проблема?
Я пытаюсь использовать RecursiveDirectoryIterator
Функция вместо Scandir
, но не получаю требуемый ответ Json.
Я знаюэто немного длинный кусок кода, но я действительно хочу реализовать другие функции, такие как directory permissions ,owner etc using iterator
Если кто-то может взглянуть на это, я буду очень благодарен.
$path = dirname(__DIR__).'/files';
$dirname = explode('/',$path);
$dirname = end($dirname);
Функция Scan Dir:
function scan($path,$dirname){
$files = array();
// Is there actually such a folder/file?
if(file_exists($path)){
foreach(scandir($path) as $f) {
if(!$f || $f[0] == '.') {
continue; // Ignore hidden files
}
$ext_to_exclude = array('php','html','.htacces');
if(cmprExtension($f,$ext_to_exclude)) {
continue; // Ignore some extensions
}
if(is_dir($path . '/' . $f)) {
// The path is a folder
$files[] = array(
"name" => $f,
"type" => "folder",
"path" => $dirname.'/'.$f,
"items" => scan($path.'/'.$f, $dirname.'/'.$f) // Recursively get the contents of the folder
);
}
else {
// It is a file
$files[] = array(
"name" => $f,
"type" => "file",
"path" => $dirname.'/'.$f,
"size" => filesize($path.'/'.$f) // Gets the size of this file
);
}
}
}
return $files;
}
RecursiveDirectoryiterator Функция:
function scanRDI($path){
$rii = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::SKIP_DOTS));
$files = array();
foreach ($rii as $file){
if($file->isDir()) {
// The path is a folder
$files[] = array(
"name" => $file->getFilename(),
"type" => "folder",
"path" => $file->getPathname(),
"items" => scanRDI($file->getPath())
);
}
else {
// It is a file
$files[] = array(
"name" => $file->getFilename(),
"type" => "file",
"path" => $file->getPathname(),
"size" => $file->getSize() // Gets the size of this file
);
}
}
return $files;
}
Json Endoing:
header('Content-type: application/json');
echo json_encode(array(
"name" => $dirname,
"type" => "folder",
"path" => $dirname,
"items" => scan($path) OR scanRDI($path)
));
Ответы Json: (В jsonviewer измените представление на код с правой панели)
Для Scandir: https://codebeautify.org/jsonviewer/cb94493e
Для RDI: https://codebeautify.org/jsonviewer/cb9e1297