Frage

Ich schrieb ein Skript, das die FilterIterator Klasse verwendet, die von dem Standard-PHP Library (SPL) kommt und ich verschiedene behabours accross PHP 5.x Versionen :( Hier ist die accept () Funktion:

public function accept()
{   
$current = $this->current();
print_r($current);      

    return true;
}   

und here seine Ausgabe für PHP 5.3.1:

DirectoryIterator Object
(
    [pathName:SplFileInfo:private] => /Users/alex/Sites/dev/php/fscms/content/.
    [fileName:SplFileInfo:private] => .
    [glob:DirectoryIterator:private] => 
    [subPathName:RecursiveDirectoryIterator:private] => 
)
DirectoryIterator Object
(
    [pathName:SplFileInfo:private] => /Users/alex/Sites/dev/php/fscms/content/..
    [fileName:SplFileInfo:private] => ..
    [glob:DirectoryIterator:private] => 
    [subPathName:RecursiveDirectoryIterator:private] => 
)
DirectoryIterator Object
(
    [pathName:SplFileInfo:private] => /Users/alex/Sites/dev/php/fscms/content/.DS_Store
    [fileName:SplFileInfo:private] => .DS_Store
    [glob:DirectoryIterator:private] => 
    [subPathName:RecursiveDirectoryIterator:private] => 
)

und here, was ich mit dem gleichen Code unter PHP 5.2.5

erhalten
DirectoryIterator Object
(
)
DirectoryIterator Object
(
)
DirectoryIterator Object
(
)

Diese hat die Erlaubnis 755 auf alle Dateien. Was ist mit dat up?

War es hilfreich?

Lösung

Scheint, wie das eigentlich ist OK! Aufrufen von Methoden auf dem scheinbar leeren DirectoryIterator Objekte funktioniert. Die Fragen, die ich hatte waren an anderer Stelle und hatte mit Klonen, diese Objekte zu tun. Scheint PHP 5.3 Klone tief, während 5.2 nicht so alle erhalten die Verweise auf jeder Iteration (oder so ähnlich) getötet. Es ist ein hässliches, un dokumentierte Chaos: PHP saugt

Andere Tipps

Von PHP.net:

  • Hinweis: Ab PHP 5.3.0 diese Erweiterung nicht mehr deaktiviert werden kann und daher immer verfügbar.

Möglicherweise Ihre PHP 5.2.5 Konfiguration ist in gewisser Weise unvollständig / falsch? Haben Sie Ihr Fehlerprotokoll leve auf Anzeige Warnungen eingestellt? Wenn nicht, stellen Sie ihn und den Code erneut ausführen, um zu sehen, ob seine Warnungen zu werfen ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top