Hier nochmal eine Ergänzung...
Da ich gerade ein altes Modul auf 4.9 migriere, war ich auf der Suche nach einer Funktion, die nur kursiv die Verzeichnisse einliest.
Dabei bin ich auf cDirHandler gestoßen - leider macht diese Klasse Ihre arbeit stellenweise nicht gut.
Der Aufruf:
Code: Alles auswählen
// zum Vergleich:
// public static function read($dirname,$recursive = false, $dirOnly = false, $fileOnly = false)
cDirHandler::read($cfgClient[$client]['path']['frontend'].$cfgClient[$client]['upload'],true,true,false);
liefert alle Verzeichnisse & Dateien zurück anstatt wie gewünscht nur die Verzeichnisse.
Mal wird über opendir() ausgelesen [alte variante], mal wird es "state of the Art" via SPL-Directory-Iterator gemacht.
Ab PHP-Version 5.3 ist ja die SPL-Erweiterung fest einkompiliert und nicht mehr deaktivierbar... somit kann man die von der Erweiterung angebotenen Iteratoren nutzen (
http://php.net/manual/de/spl.iterators.php), weshalb ich bitte ein Ticket zu öffnen mit dem Inhalt, dass die Datei komplett aktualisiert wird.
Was mich wundert... es wird bereits in der class.dirhandler.php mit dem DirectoryIterator gearbeitet, aber dann wird nicht die iteratoreigene Methode "DirectoryIterator::isDir()"genutzt, sondern die Dateisystem-Basierte Methode "is_dir()" gearbeitet.
Beispiel-Iteration, wie es aussehen könnte (so habe ich es in meinem Modul jetzt erstmal überbrückt)
Code: Alles auswählen
$iterator = new DirectoryIterator($cfgClient[$client]['path']['frontend'].$cfgClient[$client]['upload']);
foreach ($iterator as $fileinfo) {
if ($fileinfo->isDir() && !$fileinfo->isDot()) {
echo $fileinfo->getFilename() . "\n";
}
}
Bitte ggf. ein Ticket dazu ergänzen/erstellen (ich komme nicht in den Issue-Tracker - sonst würde ich es selbst machen)