2010-11-01 13 views
11

Empecé a aprender PHP SPL de ArrayIterators y me gustaría saber cuáles son los beneficios de usar SPL ArrayObject, ArrayIterator, RecursiveArrayIterator en lugar de arreglos regulares.¿Cuáles son los beneficios de usar SPL ArrayObject, ArrayIterator, RecursiveArrayIterator en lugar de arreglos regulares?

a) He oído que los bucles que usan los iteradores SPL reducirán el uso de la memoria (¿pero por qué?). Realmente no sé para creer esto o no porque no entiendo cómo puede reducir el uso de memoria.

b) Hablando de RecursiveArrayIterator podemos decir que a veces podría salvar algunas líneas de código (estamos usando una construcción foreach en lugar de 2+ (depende de la dimensión de la matriz)).

Probablemente, mis preguntas parezcan ser muy fáciles para alguien, pero hay muy poca información/documentación sobre SPL.

Gracias

+0

¿Fue suficiente mi respuesta? –

+0

Relacionado: [SPL vs. Array: ¿Cuándo deberíamos usar SPL y cuándo debemos usar Array en PHP?] (Http://stackoverflow.com/questions/3166405/php-spl-vs-array-when-should-we -use-spl-and-when-we-should-use-array-in-php5) (Jul 2010) – hakre

Respuesta

8

El principal beneficio que está buscando en el acceso de datos eficiente en su mayoría en el área de lectura. De esta forma puede usar objetos como una matriz en un foreach para una interacción más cercana con PHP.

a) La forma de reducir el uso de la memoria es no hacer una copia de la matriz, pero si se hace correctamente en el motor debe ser una nueva referencia hasta que la matriz se modifique y luego se copie.

b) Esencialmente

Un buen ejemplo de esto sería la extensión SimpleXML. El objeto PHP/XML con el que está interactuando también actúa como una matriz que hace que sea eficiente de usar porque puede foreach o acceder a uno de los elementos de la lista. No es necesario que tome una matriz del objeto y luego itere y haga otra cosa si desea el nombre de la etiqueta o un atributo.

Cuestiones relacionadas