php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 07.09.2010, 15:11  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard SPL: DirectoryFilterDots und die Frage nach dem Sinn

Die SPL Iteratoren sind eine tolle Sache aber leider wenig dokumentiert, da steige ich immer noch nicht völlig durch. Kann mir mal jemand erklären, was für einen Sinn die Klasse DirectoryFilterDots hat?

SPL-StandardPHPLibrary: DirectoryFilterDots Class Reference

Es wird dort ein RecursiveDirectoryIterator erstellt und zusätzlich . und .. gefiltert. Da der RecursiveDirectoryIterator diese aber ohnehin ignoriert sehe ich beim besten Willen keinen Unterschied.

PHP-Code:
// RecursiveDirectoryIterator (hier nicht wirklich rekursiv, da ohne RecursiveIteratorIterator)
$it = new RecursiveDirectoryIterator(dirname(__FILE__));
foreach(
$it as $key=>$value) {
    echo 
sprintf("%s => %s (%s)\n"$key$valueget_class($value));
}

// DirectoryFilterDots (erzeugt die gleiche Ausgabe)
$it = new DirectoryFilterDots(dirname(__FILE__));
foreach(
$it as $key=>$value) {
    echo 
sprintf("%s => %s (%s)\n"$key$valueget_class($value));

Habe ich also irgendeinen Vorteil dadurch?
fab ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 07.09.2010, 15:14  
Erfahrener Benutzer
 
Registriert seit: 17.08.2010
Beiträge: 216
PHP-Kenntnisse:
Fortgeschritten
Dormilich befindet sich auf einem aufstrebenden Ast
Standard

nunja, wie der Name und die Beschreibung sagen:
Zitat:
Further more it filters the entries '.' and '..'.
Dormilich ist offline   Mit Zitat antworten
Alt 07.09.2010, 15:18  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Und wie ich schon sagte
Zitat:
Zitat von fab Beitrag anzeigen
Da der RecursiveDirectoryIterator diese aber ohnehin ignoriert sehe ich beim besten Willen keinen Unterschied.
fab ist offline   Mit Zitat antworten
Alt 07.09.2010, 15:27  
Erfahrener Benutzer
 
Benutzerbild von mermshaus
 
Registriert seit: 14.06.2009
Beiträge: 1.731
PHP-Kenntnisse:
Fortgeschritten
mermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz sein
Standard

Zitat:
Zitat von fab
Da der RecursiveDirectoryIterator diese aber ohnehin ignoriert sehe ich beim besten Willen keinen Unterschied.
Bei mir werden im ersten Fall die Dot-Dateien mit ausgegeben. Darauf deutet auch zumindest ein Beispiel in der Doku hin, in dem ebenfalls noch auf isDot geprüft wird.

- PHP: RecursiveDirectoryIterator::__construct - Manual

PHP-Code:
<?php

// siehe:
// http://www.php.net/~helly/php/ext/spl/directoryfilterdots_8inc-source.html
class DirectoryFilterDots extends RecursiveFilterIterator
{
    function 
__construct($path)
    {
        
parent::__construct(new RecursiveDirectoryIterator($path));
    }

    function 
accept()
    {
        return !
$this->getInnerIterator()->isDot();
    }

    function 
key()
    {
        return 
$this->getInnerIterator()->getPathname();
    }
}

$test1 '';
$test2 '';

// RecursiveDirectoryIterator (hier nicht wirklich rekursiv, da ohne 
// RecursiveIteratorIterator)
$it = new RecursiveDirectoryIterator(dirname(__FILE__));
foreach(
$it as $key=>$value) {
    
$test1 .= sprintf("%s => %s (%s)\n"$key$valueget_class($value));
}

// DirectoryFilterDots (erzeugt die gleiche Ausgabe)
$it = new DirectoryFilterDots(dirname(__FILE__));
foreach(
$it as $key=>$value) {
    
$test2 .= sprintf("%s => %s (%s)\n"$key$valueget_class($value));
}

#echo $test1;
#echo $test2;

var_dump($test1 === $test2);
Die ~helly-Doku ist übrigens mittlerweile über drei Jahre alt, wenn die Angaben dort stimmen. Mir ist leider keine Alternative bekannt. Ich finde die Klassen auch äußerst unzureichend dokumentiert.

Robo hat dazu glaube ich ein paar Artikel.

- Einträge mit dem Tag SPL
__________________
Blog | Buch | Kaloa

Geändert von mermshaus (07.09.2010 um 15:49 Uhr). Grund: Quelle für DirectoryFilterDots hinzugefügt
mermshaus ist offline   Mit Zitat antworten
Alt 07.09.2010, 15:29  
Erfahrener Benutzer
 
Registriert seit: 17.08.2010
Beiträge: 216
PHP-Kenntnisse:
Fortgeschritten
Dormilich befindet sich auf einem aufstrebenden Ast
Standard

steht das irgendwo?

jedenfalls ist der Unterschied ein anderer, RecursiveDirectoryIterator erbt von FilesystemIterator, während DirectoryFilterDots "nur" von DirectoryIterator erbt.

außerdem kann es sein, daß es DirectoryFilterDots gar nicht mehr gibt (mein System kannte den gar nicht)

Geändert von Dormilich (07.09.2010 um 15:33 Uhr).
Dormilich ist offline   Mit Zitat antworten
Alt 07.09.2010, 15:42  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Zitat:
Zitat von mermshaus Beitrag anzeigen
Bei mir werden im ersten Fall die Dot-Dateien mit ausgegeben. Darauf deutet auch zumindest ein Beispiel in der Doku hin, in dem ebenfalls noch auf isDot geprüft wird.
Komisch, bei mir ist es nicht so, gut zu wissen dass man sich nicht auf diese Einstellung verlassen sollte.

Zitat:
Zitat von mermshaus Beitrag anzeigen
Robo hat dazu glaube ich ein paar Artikel.

- Einträge mit dem Tag SPL
Danke, ich werde mal stöbern!

Zitat:
Zitat von Dormilich Beitrag anzeigen
jedenfalls ist der Unterschied ein anderer, RecursiveDirectoryIterator erbt von FilesystemIterator, während DirectoryFilterDots "nur" von DirectoryIterator erbt.
Stimmt (außer dass es nicht DirectoryIterator ist sondern RecursiveFilterIterator), allerdings auch nur ein Grund mehr, RecursiveDirectoryIterator zu benutzen.

Zitat:
Zitat von Dormilich Beitrag anzeigen
außerdem kann es sein, daß es DirectoryFilterDots gar nicht mehr gibt (mein System kannte den gar nicht)
Ich habe ihn heute erst entdeckt und musste ihn auf PHP 5.2.12 ebenfalls selber deklarieren. Allerdings hatte ich nichts dazu in den Changelogs gefunden, also wurde er vielleicht still und heimlich wegen Bedeutungslosigkeit entfernt?
fab ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Eine Frage zum guten Code-Layout SilentSight JavaScript, Ajax und mehr 3 14.07.2010 09:18
[Erledigt] Frage zu JOIN Befehl und dem Auslesen desselben apo PHP Tipps 2010 11 13.06.2010 19:32
Sinn von MVC-Frameworks auf PHP-Basis, die Zweite IceOnFire2323 Software-Design 11 08.10.2009 20:47
Sinn und Zweck abstracter klassen und interfaces litterauspirna PHP Tipps 2009 8 13.06.2009 00:14
Frage zu try, throw und exceptions litterauspirna PHP Tipps 2009 6 17.05.2009 14:21
URL Frage Eclipse16V PHP Tipps 2009 8 23.02.2009 17:02
Hallo eine Frage in sachen Forensysteme spikytux HTML, Usability und Barrierefreiheit 11 03.01.2009 15:06
Frage wegen Dateigrösse robydog PHP Tipps 2008 10 22.04.2008 21:47
[Erledigt] frage PHP Tipps 2005-2 9 15.06.2005 13:22
.htaccess - Frage Stümper PHP Tipps 2005 11 30.05.2005 11:56
Performence Frage PHP-Fortgeschrittene 10 06.05.2005 19:00
Frage zu einem Editformular PHP Tipps 2005 3 25.04.2005 14:58
Frage: gibt es bei PHP sowas wie target="_blank" PHP Tipps 2005 6 20.04.2005 06:27
mal ne Frage PHP Tipps 2005 7 14.04.2005 09:46
[Erledigt] Frage zur Funkrionen? PHP Tipps 2004-2 10 01.12.2004 09:42

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php filesystemiterator filter, php directoryfilterdots, recursivefilteriterator and filteriterator combine?, php spl directory, php recursivedirectoryiterator dot, recursivedirectoryiterator recursivefilteriterator, php spl directories, directoryfilterdots, php recursive filter iterator, http://www.php.de: filesystemiterator, recursivefilteriterator recursivedirectoryiterator, sinn von .dot dateien, php spl code, recursivedirectoryiterator isdot, php spl filter

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:32 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum