Listagem de todos os arquivos do diretório com DirectoryIterator no PHP
Postado por: Flávio Rodrigues emSe não houver um motivo muito claro pra usar opendir, readdir e closedir (não consigo pensar em mais nenhum), a forma mais prática de listar o conteúdo de um diretório é com DirectoryIterator:
$iterator = new DirectoryIterator('/var/www');
foreach ( $iterator as $entry ) {
echo $entry->getFilename(), "\n";
}
Se for necessário listar os arquivos recursivamente, percorrendo todos os subdiretórios, é só usar o RecursiveDirectoryIterator junto com o RecursiveIteratorIterator:
$iterator = new RecursiveDirectoryIterator('/var/www');
$recursiveIterator = new RecursiveIteratorIterator($iterator);
foreach ( $recursiveIterator as $entry ) {
echo $entry->getFilename(), "\n";
}
Com um pouco de criatividade, é possível estender essas classes com qualquer lógica facilmente, como por exemplo, para montar uma árvore com a estrutura dos diretórios.













Belo post, começou muito bem, programo a algum tempo em PHP e não conhecia esta Classe..
Eu tenho uma aplicação PHP que está usando “opendir, readdir e closedir” não sabia da existência dessa classe.
Ela está disponível a partir de qual Versão do PHP?
Vou substituir o que eu tenho na minha aplicação por essa se funcionar direitinho na minha versão do PHP…
Então Vitor, se eu não me engano, está disponível apenas a partir da versão 5.0
Mas se sua aplicação ainda roda na versão 4, ta na hora de atualizar amigão =)
Flávio, já que o negócio é mão na massa, já pode dar uma ajuda em sistemas que são utilizados na internet. EX: Orkut, Youtube, …
Exemplificar algumas funções usadas. Muitas dessas funções usadas nesses sites, nós precisamos utilizar hoje em dia.
Exemplo: Sistema de recado. Muito fácil de se fazer em php e tem pessoas que não sabem ainda. Acho que esse tipo de conteúdo seria muito interessante!
O trabalho com sessões seria também um ótimo artigo. Aguardo os outros posts e espero ajudar no que puder!
By Alexandre
Flábio, muito bom divulgar esse recurso…
Só acho que vale a pena citar também que essa função faz parte da SPL – Standard PHP Library.
Mais sobre a SPL aqui http://br.php.net/manual/pt_BR/book.spl.php e aqui http://www.php.net/~helly/php/ext/spl/
[]s
Fala Samir, primeiro que é Flávio e nao Flávio! hehehe =P
Bom, muito bacana sua contribuição, mas hoje, acredito que 90% (to chutando) dos servidores de hospedagem já devem ter migrado para PHP 5.3.0 então em 90% dos casos a função já será nativa do servidor.
Mas de qualquer forma, realmente vale a pena ler um pouquinho mais sobre SPL!!
ops, Flávio, sorry my typo =)
[]s
Esse DirectoryIterator, e acho que todas as classes da SPL, é uma mão na roda mesmo!
Ja tinha ate passado a vista sobre a class mais nunca tinha utilizado ela agora com o post comecei a usar e facilita muito mesmo vlw pelo post ajudo bastante
Legal hein! E desempenho, li algumas coisas sobre a SPL e todos dizem que ela ganha em desempenho, tem alguma informação sobre isso?
Olá Flavio, Parabéns pelo POST.
Como seria pra exibir uma quantidade limitada de arquivos?