Desde ahí es que empecé a usar el DirectoryIterator para recorrer fácilmente una estructura de directorios de forma recursiva con solo:
1
<?php
2 foreach (
3 new RecursiveIteratorIterator(
4 new RecursiveDirectoryIterator(
5 DATA,
6 RecursiveDirectoryIterator::KEY_AS_PATHNAME),
7 RecursiveIteratorIterator::CHILD_FIRST
8 ) as $directory => $info){
9
10 if ($this->isFileDat($info)) {
11 $this->procesarDir($directory);
12 }
13 }
14 ?>
Parece algo complejo, pero probando este código e imprimiendo los valores verás como puedes recorrer su contenido.
Todo esto viene al caso del artículo "5 funcionalidades de PHP que no se puede ignorar", donde entre ellas se habla de la "SPL".
Indudablemente hay mucho para aprender, pero está todo en los manuales. Si te crees "Senior" (no me cuento, me considero eterno alumno), no lo creas hasta por lo menos haber usado alguna vez estas 5 funcionalidades. ;-)
8 comentarios:
Creo PHP debería de hacerle mas ruido a sus librerías internas, son muy poderosas y dan mucha funcionalidad de forma nativa.
De todos modos gracias por acordarte de hace tanto tiempo ;-)
Muy poderosas, ocupo a diario, Iterator, ArrayObject, SplObjectStorage (Colección de objetos), SplObserver, RecursiveIterator, DirectoryIterator.
muy recomendado usarla, auque aun falta documentación oficial de php, pero vale la pena jugar con ellas y usarlas.
ese codigo es equivalente a esto:
import os
for dirpath, dirnames, filenames in os.walk("/home/alqu/stuff"):
for filename in filenames:
print filename
Estimado StarSur:
Ajá y eso es ... Java?
Entonces? ;-)
Eso es Python, tambien podria ser Ruby, o un macro de Lisp, pero seguro que no seria Java, imposible desde un punto de vista filosofico, economico y social, imposible.
Estimado StarSur:
> Eso es Python, tambien podria
> ser Ruby, o un macro de Lisp, pero
> seguro que no seria Java,
> imposible desde un punto de vista
> filosofico, economico y social,
> imposible.
Sí, bueno, no fui claro, lo que quise decir: tu me saliste con código de un lenguaje X, yo te comenté que era un lenguaje Y como ejemplo de que "no te entiendo nada, que tiene que ver una cosa con otra" (sorry, soy duro a veces).
Nota mental: dejar de hacer chistes que solo yo entiendo y luego quedo pegado cuando los explico y nadie me cree.
Tranquilo... creo que tu intención se entendió a la primera ;) solo que hay talibanes para cualquier cosa: ortografía, sistemas operativos... lenguajes.
Lo que comenta es una tontería y sí, es obvio que se puede tomar como pseudocódigo, en php también puedes hacerlo mucho más corto:
foreach ( scandir($path) as $file ) {}
foreach ( glob("$path/*.$filter") as $file ) {}
la clásica:
while ( ($archivo = readdir($path)) !== false ) {}
...pero no tan robusto ^^!
Buff, hay mil formas, la recursividad también es abstracta, no tiene nada que ver con el lenguaje.
Estoy totalmente de acuerdo en la cantidad de funcionalidades nativas y desconocidas de PHP... tenemos librerías externas, frameworks... que en muchos casos implementan lo que PHP ya puede hacer pero es cierto, sí, se desconocen.
Hola, hace un tiempo que empece a programar en php y este blog siempre aparece cuando consulto algo :). Gracias por los consejos y por hacerme descubrir cosas nuevas.
Estuve viendo el manual de SPL y al parecer esta bastante completo dejo el link:
http://ar2.php.net/manual/en/book.spl.php
Publicar un comentario