2016-02-23 2 views
0

Я попытался сделать функцию, чтобы показать все файлы и dir (если есть) в одном выбранном каталоге.функция, которая показывает все файлы и каталоги

class Test{ 

private $directory; 

    public function getDir($directory){ 
      $this->directory = realpath($directory); 
      $scan = scandir($this->directory); 

      foreach ($scan as $value) { 

       if(!is_dir($this->directory.DIRECTORY_SEPARATOR.$value)){ 
        echo '<span style="color:blue">'.$value.'</span><br>'; 
       }else{ 
        echo '<span style="color:red">'.$value.'</span><br>'; 
        //Here I tried to return getDir($value) - but I retype $directory any ideas ? 
       } 
      } 
     } 

Я подумал над этим, как сделать, но ... Маленькая помощь будет очень приятной. Извините, мой плохой английский.

+0

Может быть, если $ каталог массив, но я не знаю;) – Nick

+0

http://stackoverflow.com/questions/15774669/list-all-files-in-one -directory-php или http://php.net/manual/en/function.scandir.php или http://www.sitepoint.com/list-files-and-directories-with-php/ или http: // proger.i-forge.net/%D0%9A%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80/PHP/[11.04. 09]% 20Recursively% 20list% 20all% 20files% 20in% 20a% 20directory.html –

+0

Я знаю, как сканировать все файлы, но я хочу, чтобы один из отсканированных файлов возвращал функцию снова. – Nick

ответ

1

Просто используйте рекурсивный путь:

<?php 
... 
private $result; 

public function getDir($directory) { 
    $files = scandir(realpath($directory)); 

    foreach($files as $key => $value){ 
     $path = realpath($directory .DIRECTORY_SEPARATOR. $value); 
     if(!is_dir($path)) { 
      $this->results[] = '<span style="color:blue">'.$value.'</span><br>'; 
     } else if($value != "." && $value != "..") { 
      $this->getDir($path); 
      $this->results[] = '<span style="color:red">'.$value.'</span><br>'; 
     } 
    } 

    return $this->results; 
} 
Смежные вопросы