Rekursywne wyświetlanie katalogów (PHP SPL)

SPL to dość fajne narzędzie do implementacji szczególnie iteracji w PHP, warte poznania. Za pmocą SPL’a da się
pewne uciążliwe funkcje napisać prościej. Poniżej przykład funkcji, która wypisuje drzewo katalogów:


class DirectoryAdapter extends RecursiveIteratorIterator
{
private $dirArray;
private $path;

public function __construct($path)
{
$this->path = $path;
parent::__construct(new RecursiveDirectoryIterator($path), parent::CHILD_FIRST);
}

public function getDirs()
{
foreach($this as $item)
{
if($item->isDir())
{
$current = count($this->dirArray);

$mtime = date("Y-m-d H:m", $this->getMTime());
$this->dirArray[$current]['mtime'] = $mtime;

$atime = date("Y-m-d H:m", $this->getATime());
$this->dirArray[$current]['atime'] = $atime;

$this->dirArray[$current]['dir'] = str_replace($this->path,'', $this->key());
}
}
return $this->dirArray;
}

public function deleteDir()
{
foreach ($this as $item)
{
if ($item->isDir())
{
rmdir($this->key());
}
else
{
unlink($this->key());
}
}
rmdir($this->path);
}
}

Wykorzystanie:


$path = "/Users/paramah/test";

if(is_Dir($path))
{
$direct = new DirectoryAdapter($path);
echo "

";
print_r($direct->getDirs());
echo "
";
}
else
{
echo "brak katalogu";
}