Dies geht aus der Spitze von meinem Kopf, wo ich irgendwie in der erwischt Änderungen vor PHP 5.3, die sich in 5.3 und später ändern sollten, bezüglich der SPL (StandardPHPLibrary) und Sachen, die auf die (schreckliche) PECL extensi verschoben werden sollten ons.
Die große Sache, die seit 5.3 geändert, war, dass die SPL eine Verlängerung wurde, die nicht mehr deaktiviert werden konnte, dass zur Liste der Standarderweiterungen
- Added SPL unter Hinweis auf die changelog von 5,3 sehen, die nicht deaktiviert werden können . (Marcus)
so dass alle Phantasie Klassen wie DirectoryIterator oder SPLDoublyLinkedList waren jetzt ein Fix-Suite von Klassen, die mit PHP 5.3 kam.
Es gab viele Diskussionen darüber, dass der DirectoryIterator bei der Iteration über Dateien/Verzeichnisse und beim Verhalten, das nicht anonym genug war, mit dem verwendeten Dateisystem immer noch sehr ungeschickt war. Je nach Dateisystem (Windows NTFS/* nix EXTx) unterschieden sich die Ergebnisse, die der Iterator zurückgeben würde, von *nix
Environments standardmäßig die Verzeichnisse dot und double dot (.
und ..
) als gültige Verzeichnisse. Diese Punktverzeichnisse könnten dann in der Schleife mit der Methode isDot()
gefiltert werden.
$it = new DirectoryIterator(__DIR__);
foreach ($it as $fileinfo) {
if (!$fileinfo->isDot())
var_dump($fileinfo->getFilename());
}
So wurde FilesystemIterator
die neue übergeordnete Klasse in PHP 5.3, der auf seine Freisetzung vor war die DirectoryIterator
(wo FilesystemIterator
DirectoryIterator
erweitert dieses Verhalten austauschbare standardmäßig zu implementieren). Das Verhalten, oder führen die FilesystemIterator
erzeugt, würde dann
$it = new FilesystemIterator(__DIR__);
foreach ($it as $fileinfo) {
echo $fileinfo->getFilename() . "\n";
}
Es ist eine gute Frage für alle verschiedenen Dateisysteme und austauschbar, ohne die Notwendigkeit eines Overhead in der Schleife gleich sein, warum sie nicht in der Dokumentation aktualisieren hat die für bemerken Benutzer auf die Tatsache, dass tatsächlich die FilesystemIterator
der vorausging.
Der Unterschied innerhalb der Teile ist, die * dokumentiert werden * auf der 'FileSystemIterator' Handbuch Seite, die sind * nicht * als geerbten Methoden aufgelistet (die Seite nicht auflistet diese sowieso, aber einige Klassen Seiten jene Liste, also nur einen Zeiger , alles, was Sie auf der Manpage * sehen, ist * der Unterschied [zumindest jetzt]). – hakre