Shows us all files and catalogues in directory except "." and "..".
<?php
foreach (new DirectoryIterator('../moodle') as $fileInfo) {
if($fileInfo->isDot()) continue;
echo $fileInfo->getFilename() . "<br>\n";
}
?>
La classe DirectoryIterator
Introduction
La classe DirectoryIterator fournit une interface simple pour lire le contenu d'un système de fichiers.
Synopsis de la classe
Sommaire
- DirectoryIterator::__construct — Construit un nouvel itérateur de dossier à partir d'un chemin
- DirectoryIterator::current — Retourne l'élément courant du DirectoryIterator
- DirectoryIterator::getATime — Lit la date et l'heure du dernier accès à un fichier
- DirectoryIterator::getBasename — Lit le nom de dossier de l'élément DirectoryIterator
- DirectoryIterator::getCTime — Récupère l'heure de création de l'inode d'un fichier
- DirectoryIterator::getFilename — Retourne le nom de l'entrée courante du dossier
- DirectoryIterator::getGroup — Récupère le groupe d'un fichier
- DirectoryIterator::getInode — Récupère l'inode d'un fichier
- DirectoryIterator::getMTime — Récupère l'heure de la dernière modification d'un fichier
- DirectoryIterator::getOwner — Récupère le propriétaire d'un fichier
- DirectoryIterator::getPath — Retourne le chemin du dossier
- DirectoryIterator::getPathname — Retourne le chemin et le nom de l'entrée courante du dossier
- DirectoryIterator::getPerms — Récupère les permissions d'un fichier
- DirectoryIterator::getSize — Récupère la taille d'un fichier
- DirectoryIterator::getType — Récupère le type d'un fichier
- DirectoryIterator::isDir — Vérifie si un fichier est un dossier
- DirectoryIterator::isDot — Retourne TRUE si l'entrée courante est '.' ou '..'
- DirectoryIterator::isExecutable — Vérifie si le fichier est exécutable
- DirectoryIterator::isFile — Vérifie si l'entrée est un fichier normal
- DirectoryIterator::isLink — Vérifie si le fichier est un lien symbolique
- DirectoryIterator::isReadable — Vérifie si le fichier est accessible en lecture
- DirectoryIterator::isWritable — Vérifie si le fichier peut être modifié
- DirectoryIterator::key — Retourne l'entrée courante du dossier
- DirectoryIterator::next — Se déplace vers la prochaine entrée
- DirectoryIterator::rewind — Revient au début du dossier
- DirectoryIterator::seek — Déplace le pointeur dans un itérateur DirectoryIterator
- DirectoryIterator::__toString — Lit le nom du fichier
- DirectoryIterator::valid — Vérifie si le répertoire contient encore des entrées
DirectoryIterator
krystianmularczyk at gmail dot com
25-Jan-2009 11:31
25-Jan-2009 11:31
David Lanstein
21-Jan-2009 08:50
21-Jan-2009 08:50
DirectoryIterator::getBasename() has been also been available since 5.2.2, according to the changelog (not documented yet). It takes a parameter $suffix, and is useful if, for instance, you use a naming convention for your files (e.g. ClassName.php).
The following code uses this to add recursively All*Tests.php in any subdirectory off of tests/, basically, suites of suites.
<?php
// PHPUnit boilerplate code goes here
class AllTests {
public static function main() {
$parameters = array('verbose' => true);
PHPUnit_TextUI_TestRunner::run(self::suite(), $parameters);
}
public static function suite() {
$suite = new PHPUnit_Framework_TestSuite('AllMyTests'); // this must be something different than the class name, per PHPUnit
$it = new AllTestsFilterIterator(
new RecursiveIteratorIterator(
new RecursiveDirectoryIterator(dirname(__FILE__) . '/tests')));
for ($it->rewind(); $it->valid(); $it->next()) {
require_once($it->current());
$className = $it->current()->getBasename('.php');
$suite->addTest($className::suite());
}
return $suite;
}
}
?>
Also, the AllTestsFilterIterator above extends FilterIterator, and contains one method, accept():
<?php
class AllTestsFilterIterator extends FilterIterator {
public function accept() {
if (preg_match('/All.*Tests\.php/', $this->current())) {
return true;
} else {
return false;
}
}
}
?>
Mark van Straten
09-Jul-2008 02:56
09-Jul-2008 02:56
Implements Iterator so you can foreach() over the content of the given directory
