eio_readdir
En esta página
eio_readdir
Leer un directorio al completo
Descripción#
eio_readdir(string $path, int $flags, int $pri, callable $callback, [string $data]): resource
```php
Leer un directorio al completo (mediante las llamadas al sistema de `opendir`, `readdir` y `closedir`) y devuelve o los nombres o un array en el argumento `result` de la función `callback`, dependiendo del argumento `flags`.
## Parámetros
`path`
La ruta del directorio.
`flags`
Una combinación de constantes *EIO_READDIR\_\**.
`pri`
La prioridad de la petición: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, o `null`. Si `null` es pasado, el parámetro `pri`, internamente, es definido a `EIO_PRI_DEFAULT`.
`callback`
La función de retrollamada `callback` es llamada cuando la petición está terminada. Debe corresponder al siguiente prototipo:
void callback(mixed $data, int $result[, resource $req]);
`data`
representa los datos personalizados pasados a la petición.
`result`
representa el valor resultante específico de la petición; básicamente, el valor retornado por la llamada al sistema correspondiente.
`req`
es el recurso opcional de la petición que puede ser utilizado con funciones como `eio_get_last_error`.
`data`
Variable arbitraria pasada a `callback`.
## Valores devueltos
`eio_readdir` devuelve un recurso de petición en caso de éxito, o `false` si ocurre un error. Establece el argumento `result` de la función `callback` function según el parámetro `flags`:
`EIO_READDIR_DENTS` (`int`)
Bandera `eio_readdir`. Si se especifica, el argumento resultante de la llamada de retorno se convierte en un array con las siguientes claves: `'names'` - array de nombres de directorios `'dents'` - array de `structura eio_dirent`-como los arrays pero teniendo las siguientes claves: `'name'` - el nombre del directorio; `'type'` - una de las constantes *EIO_DT\_\**; `'inode'` - el número de inodo, si está disponible, de otro modo sin especificar;
`EIO_READDIR_DIRS_FIRST` (`int`)
Cuando se especifica esta bandera, los nombres serán devueltos en un orden donde probablemente los directorios vallan primero, en un orden de estadísticas óptimo.
`EIO_READDIR_STAT_ORDER` (`int`)
Cuando se especifica esta bandera, los nombres serán devueltos en un orden apropiado para realizar estadísticas (`stat`) con cada uno. Cuando se planea usar la función `stat` para realizar estadísticas de todos los archivos del directorio dado, el orden devuelto probablemente sea más rápido.
`EIO_READDIR_FOUND_UNKNOWN` (`int`)
Tipos de nodos:
`EIO_DT_UNKNOWN` (`int`)
Tipo de nodo desconocido(muy común). Se necistan más estadísticas (`stat`).
`EIO_DT_FIFO` (`int`)
Tipo de nodo FIFO
`EIO_DT_CHR` (`int`)
Tipo de nodo
`EIO_DT_MPC` (`int`)
Tipo de nodo de dispositivo de caracteres multiplexado (v7+coherent)
`EIO_DT_DIR` (`int`)
Tipo de nodo de directorio
`EIO_DT_NAM` (`int`)
Tipo de nodo de fichero Xenix nominado especial
`EIO_DT_BLK` (`int`)
Tipo de nodo
`EIO_DT_MPB` (`int`)
Dispositivo de bloqueo multiplexado (v7+coherent)
`EIO_DT_REG` (`int`)
Tipo de nodo
`EIO_DT_NWK` (`int`)
`EIO_DT_CMP` (`int`)
Tipo de noto especial de red HP-UX
`EIO_DT_LNK` (`int`)
Tipo de nodo de vínculo
`EIO_DT_SOCK` (`int`)
Tipo de nodo socket
`EIO_DT_DOOR` (`int`)
Tipo de nodo de puerta de Solaris
`EIO_DT_WHT` (`int`)
Tipo de nodo
`EIO_DT_MAX` (`int`)
Valor de tipo de nodo más alto
## Ejemplos
Ejemplo de `eio_readdir`
```php
Resultado del ejemplo anterior es similar a:
mi_llamada_retorno_readdir llamada
datos: NULL
resultado: array(2) {
["names"]=>
array(7) {
[0]=>
string(7) "archive"
[1]=>
string(8) "articles"
[2]=>
string(8) "incoming"
[3]=>
string(7) "innfeed"
[4]=>
string(8) "outgoing"
[5]=>
string(8) "overview"
[6]=>
string(3) "tmp"
}
["dents"]=>
array(7) {
[0]=>
array(3)
{
["name"]=>
string(7)
"archive"
["type"]=>
int(4)
["inode"]=>
int(393265)
}
[1]=>
array(3)
{
["name"]=>
string(8)
"articles"
["type"]=>
int(4)
["inode"]=>
int(393266)
}
[2]=>
array(3)
{
["name"]=>
string(8)
"incoming"
["type"]=>
int(4)
["inode"]=>
int(393267)
}
[3]=>
array(3)
{
["name"]=>
string(7)
"innfeed"
["type"]=>
int(4)
["inode"]=>
int(393269)
}
[4]=>
array(3)
{
["name"]=>
string(8)
"outgoing"
["type"]=>
int(4)
["inode"]=>
int(393270)
}
[5]=>
array(3)
{
["name"]=>
string(8)
"overview"
["type"]=>
int(4)
["inode"]=>
int(393271)
}
[6]=>
array(3)
{
["name"]=>
string(3)
"tmp"
["type"]=>
int(4)
["inode"]=>
int(393272)
}
}
}