(PHP 5 >= 5.4.0)
La llamada de retorno debe aceptar tres argumentos: El elemento actual, la clave actual y el iterador.
Ejemplo #1 Argumentos de llamada de retorno disponibles
<?php
/**
* Llamada de retorno para RecursiveCallbackFilterIterator
*
* @param $current El valor del elemento actual
* @param $key la clave del elemento actual
* @param $iterator El iterador a ser filtrado
* @return boolean TRUE si acepta el elemento actual, de lo contrario FALSE
*/
function my_callback($current, $key, $iterator) {
// Su código de filtrado aquí
}
?>
Filtrar un iterador recursivo generalmente involucra a dos condiciones.
La primera es que, con el fin de permitir la recursividad, la función de
devolución de llamada debe devolver TRUE
si el iterador actual tiene hijos.
La segunda es la condición normal de filtro, como el tamaño del archivo o la
comprobación de la extensión como en el ejemplo de abajo.
Ejemplo #2 Ejemplo básico de llamada de retorno recursiva
<?php
$dir = new FilesystemIterator(__DIR__);
// Filtra archivos grandes ( > 100MB)
$files = new RecursiveCallbackFilterIterator($dir, function ($current, $key, $iterator) {
// Permite recursividad
if ($iterator->hasChildren()) {
return TRUE;
}
// Buscar archivo grande
if ($current->isFile() && $current->getSize() > 104857600) {
return TRUE;
}
return FALSE;
});
foreach (new RecursiveIteratorIterator($files) as $file) {
echo $file->getPathname() . PHP_EOL;
}
?>