Bir Klasörün İçindeki Tüm Dosya ve Klasörleri Görüntülemek

<?php
class DerinDizin{
  var $dizin;
  var $dosyalar;
  function DerinDizin(){
    $this->dizin = '';
    $this->dosyalar = array();
    $this->dizinelemanlar = new elemanlar();
  }
  function dizinAyarla( $dizin ){
    $this->dizin = $dizin;
    $this->dosyalar = array();
    $this->dizinelemanlar->sifir();
    $this->dizinelemanlar->push( $this->dizin );
  }
  function yukle(){
    while( $this->mevcutDizin = $this->dizinelemanlar->pop() ){
      $this->mevcutDizindenYukle();
    }
  }
  function mevcutDizindenYukle(){
    if ( $kol = @opendir( $this->mevcutDizin ) ){
      while ( false !== ( $dosya = readdir( $kol ) ) ){
        if ( $dosya == "." || $dosya == ".." ) continue;
        $dosyaYolu = $this->mevcutDizin . '/' . $dosya;
        $dosyatipi = filetype( $dosyaYolu );
        if ( $dosyatipi == 'dir' ){
          $this->dizinelemanlar->push($dosyaYolu);
          continue;
        }
        $this->dosyalar[]=$dosyaYolu;
      }
      closedir($kol);
    }
    else{
      echo 'Hata : Dizin Açılamıyor "'.$this->mevcutDizin.'"';
    }
  }
}
class elemanlar{
  var $elemanlar;
  function elemanlar(){
    $this->sifir();
  }
  function push( $eleman ){
    array_push( $this->elemanlar, $eleman );
  }
  function pop(){
    return array_pop( $this->elemanlar );
  }
  function sifir(){
    $this->elemanlar = array();
  }
}
$dizinAdi = '..';
$dizin = new DerinDizin();
$dizin->dizinAyarla($dizinAdi);
$dizin->yukle();
foreach( $dizin->dosyalar as $n => $kolYolu ){
	echo ($n+1)." ".$kolYolu."<br>";
}
?>

Çıktısı

1 ../localweb/index.php
2 ../localweb/test/2.txt
3 ../localweb/test/a/b.php
4 ../databases/tr.txt
5 ../conf/asd.txt
6 ../conf/test.conf
7 ../conf/test2.conf