Quando ainda estávamos na era do PHP4 e criávamos um código para percorrer um diretório, nosso produto final ficava mais ou menos assim:
<?php
//Abre o diretório do arquivo atual
$pasta = opendir(getcwd());
//Cria um loop para percorrer todos os registros de um diretório
while (($arquivo = readdir($pasta)) !== false) {
echo $arquivo."<br />";
}
//Fecha o diretório
closedir($pasta);
?>
Já no PHP5 contamos com o advento dos Iterators, objetos que nos permitem percorrer uma cadeia de dados(esta definição não serve para a interface Iterator). Uma das classes nativas do PHP5 que implementa a interface Iterator é DirectoryIterator. A classe DirectoryIterator nos possibilita percorrer um diretório tratando o arquivo da iteração corrente como um objeto e podemos assim por exemplo obter o nome de um arquivo, seu tamanho e tipo através de métodos. Abaixo segue um exemplo de iteração de um diretório por meio de um objeto proveniente de DirectoryIterator. A cada iteração mostraremos o nome e o tipo do arquivo corrente.
foreach(new DirectoryIterator(getcwd()) as $arq){
echo $arq->getFilename().' - '.$arq->getType()."<br/>";
}
Uma solução com certeza mais elegante!
Ja que estou aqui, vou lhe perguntar, estou utilizando esta funcao do PHP localmente e esta uma maravilha, mas quando eu mandou para meu servidor BRS, o foreach nem rola, dele para baixo o código some, tem idéia do que posso fazer?
Muito bom esse artigo.