Pregunta

escribí un guión que está utilizando la clase FilterIterator que proviene de la biblioteca estándar de PHP (SPL) y consigo diferentes behabours cruzando versiones de PHP 5.x :( Aquí el aceptar () Función:

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

    return true;
}   

y aquí su salida para 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] => 
)

y aquí lo que me pasa con el mismo código en PHP 5.2.5

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

Este último tiene permiso 755 en todos los archivos. ¿Cuál es hasta con dat?

¿Fue útil?

Solución

Parece que este es en realidad estaba bien! Llamar a los métodos de la DirectoryIterator objetos aparentemente vacío obras. Los problemas que estaba teniendo eran en otro lugar y tuvo que ver con la clonación de estos objetos. Parece PHP 5.3 clones profunda, mientras que 5.2 por lo que no todas las referencias que te maten en cada iteración (o algo así). Es un feo, desorden-un documentado: PHP chupa

Otros consejos

De PHP.net:

  • Nota: A partir de PHP 5.3.0 esta extensión ya no se puede desactivar y por lo tanto está siempre disponible.

Es posible que su configuración de PHP 5.2.5 es de alguna manera incompleta / mal? ¿Se ha configurado el error de registro de leve a mostrar advertencias? Si no es así, ajustar y ejecutar su código de nuevo para ver si su lanzando advertencias ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top