2012-02-27 4 views
2

У меня есть эта реж структура для журналовбревенчатый Считыватель с PHP RecursiveTreeIterator

logs 
-2012 
--01 
---01.php 
---02.php 
--02 
---20.php 
---23.php 

Я хочу, чтобы иметь возможность использовать РНР RecursiveTreeIterator, чтобы иметь возможность отображать дерево, имеющим фактические PHP файлы (не DIRS) в качестве ссылок для отображения содержимого файла.

Используя первый ответ в этом вопросе, как руководство: Sorting files per directory using SPL's DirectoryTreeIterator

Я новичок в большинстве PHP 5 SPL так мне нужна помощь здесь. Как мне построить дерево? Благодаря!

+1

Если вы просто хотите перечислить файлы, вам не понадобится treeIterator. TreeIterator предназначен для печати дерева ASCII. – Gordon

+0

Возможный дубликат [ASCII-библиотека для создания «Довольно» Деревья каталогов?] (Http://stackoverflow.com/a/4196368/208809) (удалите константу 'SELF_FIRST' и должны отобразить только файлы/листья) – Gordon

+0

should Я перефразирую это? Я пробовал разные подходы, ссылку и подход DirectoryIterator. Гордон, разве нет способа получить информацию о файле из этого дерева ASCII или просто распечатать? – yretuta

ответ

4

В качестве альтернативы ссылок, предоставленных в комментариях уже:

вы можете также расширить current() метод в TreeIterator, чтобы обеспечить дополнительную разметку:

class LinkedRecursiveTreeIterator extends RecursiveTreeIterator 
{ 
    public function current() 
    { 
     return str_replace(
      $this->getInnerIterator()->current(), 
      sprintf(
       '<a href="%1$s">%1$s</a>', 
       $this->getInnerIterator()->current() 
      ), 
      parent::current() 
     ); 
    } 
} 

$treeIterator = new LinkedRecursiveTreeIterator(
    new RecursiveDirectoryIterator('/path/to/dir'), 
    LinkedRecursiveTreeIterator::LEAVES_ONLY); 

foreach($treeIterator as $val) echo $val, PHP_EOL; 

Вышеприведённое будет печатать обычное дерево ASCII TreeIterator, но обертывает имя файла в гиперссылки. Обратите внимание, что $this->getInnerIterator()->current() возвращает объекты File, поэтому вы можете получить доступ к любым другим свойствам файла, таким как размер файла, последний раз и т. Д.

+0

вот оно! с трудом искали способ доступа к файлам, поскольку в документации много сказано. – yretuta