Я работаю над проектом файлового менеджера и, похоже, не могу разобраться с рекурсивным списком каталогов, где я получаю только каталоги. Все, что я пробовал, либо оставляет пустые подкаталоги, либо не работает, когда я пытаюсь разобрать его в структуре возврата моего дерева jQuery.
Я пытался использовать массив и рекурсивные итераторы, но пока у меня ничего не работает.
** Обновление **
Благодаря общему мнению, я сократил свой код до:
class image_management {
private $_user_id;
private $_user_name;
private $_user_path;
/**
* Constructor
*/
function __construct($user_id, $user_name) {
$this->_user_id = $user_id;
$this->_user_name = $user_name;
$this->_user_path = ORDER_ROOT.$this->_user_id;
}
/**
* Cleanup the class and close connections
*
*/
function __destruct() {
}
/**
* Get Image Folders
* Returns an HTML list of the folders under a users
* directory.
*
* @param hash $user_id -user id hash
* @param string $user_name - users email address
* @return string - html list
*/
public function getHTMLTree() {
$html = "<li><a href='#'>";
$html .= $this->_user_name . "</a><ul>";
$objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($this->_user_path), RecursiveIteratorIterator::SELF_FIRST);
foreach($objects as $file) {
if($file->isDir() ) {
$item = substr($file->getPathname(),strlen($this->_user_path));
echo $item;
}
}
return $html;
}
}
Это дает мне вывод:
/home/printshi/public_html/test/orders/88a0a01afd3728af8f6710ed874267f3
/Aggie_Stuff
/Misc
/Misc/Christmas
/Misc/Christmas/santa
/Misc/Christmas/frosty
/Misc/test1
/Geek_Stuff
, который приближает меня, теперь моя проблема в том, что мне нужно сделать так, чтобы все эти элементы были обернуты в HTML, чтобы я получал вывод, подобный следующему:
<ul>
<li>Aggie_Stuff</li>
<li>Misc<ul>
<li>Christmas<ul>
<li>santa</li>
<li>frosty</li>
</ul>
</li>
<li>test1</li>
</ul>
<li>Geek_Stuff</li>
Я понимаю, что рекурсивная часть заключается в том, чтобы заставить его делать HTML, который, как мне кажется, не позволяет мне понять, как бы я ни старался.