Question

J'ai écrit un script qui utilise la classe FilterIterator qui vient de la Standard PHP Library (SPL) et je reçois différentes behabours accross versions 5.x PHP :( Ici, la fonction accept ():

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

    return true;
}   

et Heres sa sortie pour 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] => 
)

et voici ce que je reçois avec le même code sous PHP 5.2.5

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

Ce dernier a l'autorisation 755 sur tous les fichiers. Ce qui est avec dat?

Était-ce utile?

La solution

On dirait que c'est en fait OK! Appel de méthodes sur les objets DirectoryIterator apparemment vide œuvres. Les problèmes que je rencontrais étaient ailleurs et eu à voir avec le clonage de ces objets. Semble PHP 5.3 clones en profondeur tandis que 5.2 ne pas toutes les références se font tuer à chaque itération (ou quelque chose comme ça). Son laid, le désordre non documenté: PHP suce

Autres conseils

De PHP.net:

  • Remarque: PHP 5.3.0 cette extension ne peut plus être désactivé et est donc toujours disponible.

Peut-être votre PHP configuration 5.2.5 est en quelque sorte incomplète / mal? Avez-vous votre erreur Leve journal configuré pour afficher des avertissements? Sinon, régler et exécutez votre nouveau code pour voir si son lancer des avertissements ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top