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 "<pre>";
    print_r($direct->getDirs());
    echo "<pre>";
}
else
{
    echo "brak katalogu";
}