Estoy examinando la biblioteca PHP estándar (SPL). Solo utilicé arreglos antes y ahora descubrí que PHP tiene muchas clases estándar. Pero no hay palabras en el manual si se recomienda usarlo o no. Por ejemplo, explícitamente recomiendan usar la construcción foreach
para iterar matrices porque es más rápido. ¿Y qué hay de esta biblioteca? Si necesito almacenar algunos datos en un objeto, ¿debería usar alguna clase concreta de SPL para mi situación o usar arreglos estándar es mejor de todos modos?PHP SPL, ¿vale la pena usarlo o las funciones de matriz sin formato son mejores?
Respuesta
Hay mucho para su pregunta. ¿Deberías usar las estructuras de datos SPL? Depende.
La matriz de PHP puede actuar como un mapa, una lista vinculada o una matriz. En muy pocas ocasiones, de hecho, desea un solo tipo de datos que actúe como todas esas cosas al mismo tiempo, por lo que la naturaleza enfocada de los tipos de datos SPL no es tan limitante. De hecho, la mayoría de los "outsiders" (y algunos "insiders") considerarían la matriz de PHP una parodia.
El principal inconveniente de la matriz de PHP es que utiliza mucha memoria. Incluso si solo quiere una matriz fija, secuencial e indexada, tiene la sobrecarga de las cosas que están vinculadas entre sí y el almacenamiento de las claves. A pesar de eso, la matriz de PHP suele ser mucho más rápida que los tipos de objetos si usted está agregando datos e iterando sobre ellos, probablemente porque las llamadas a las funciones disminuyen la velocidad.
En general, no veo mucha gente que use las estructuras de datos SPL. Sobre todo, creo, porque en el contexto de PHP y las aplicaciones web, en general no son muy aplicables. Por lo general, se trata de matrices pequeñas, donde la conveniencia de los operadores integrados y las funciones de matriz superan cualquier ventaja de los tipos de SPL.
Eso dijo:
Si usted se encuentra en una situación en la que está utilizando una matriz como una lista enlazada (insertar/eliminar en el medio), a continuación, pruebe uno de los SPL lista doblemente enlazada.
Si se encuentra utilizando una gran matriz indexada, intente con
SPLFixedArray
. Definitivamente consumirán mucha menos memoria.Si necesita tener un mapa con objetos como la clave, utilice un
SplObjectStorage
(ya que la matriz de PHP no funciona con las teclas de objeto).Si desea mantener los datos ordenados en una matriz, pruebe uno de los montones.
referencia la matriz nativa vs el objeto SPL y usar en cada uno tiene la memoria de velocidad + + compensación simplicidad que más le convenga.
+1, pero diré por mí, siempre me inclino por las matrices nativas de php simplemente porque tienen una excelente integración de idiomas y funcionan con todas las maravillosas funciones de arreglos de php. spl a menudo se siente como un inadaptado en php. – goat
Acepto que estas estructuras de datos tienden a sobresalir como un pulgar dolorido. Por lo general, solo los utilizo cuando estoy machacando muchos datos (y aun así, PHP no es mi primera elección de un idioma) o cuando necesito pasar arreglos por referencia. – Matthew
- 1. MyEclipse: ¿Todavía vale la pena usarlo?
- 2. ¿Vale la pena usar OOP en PHP?
- 3. ¿Vale la pena la asignación O/R?
- 4. ¿Vale la pena Heroku?
- 5. ¿Vale la pena Napkee?
- 6. ¿Vale la pena Qt?
- 7. ¿Vale la pena usar JDEE?
- 8. ¿Vale la pena la obstrucción?
- 9. ¿Está Processing.js vale la pena?
- 10. ¿Vale la pena cerrar archivos en pequeñas funciones?
- 11. ¿VS2010 Premium vale la pena el precio?
- 12. Zend Framework ¿Vale la pena?
- 13. Entity Framework 4.0: ¿vale la pena ahora?
- 14. vale la pena aprender groovy?
- 15. GroupLayout: ¿Vale la pena aprender?
- 16. Rieles: recursos RESTful: ¿vale la pena usar o inflexible/sobrevalorado?
- 17. ¿Vale la pena aprender las API específicas de AMD?
- 18. lista vinculada php spl o personalizada?
- 19. jQuery UI + ASP.NET UpdatePanel - ¿Vale la pena?
- 20. ¿Vale la pena aprender COM?
- 21. Rails + Oracle: ¿vale la pena?
- 22. ¿Vale la pena verificar los argumentos de la función Perl?
- 23. Usar burlas durante las pruebas ¿vale la pena el esfuerzo?
- 24. Agile Toolkit, vale la pena usar?
- 25. ¿Vale la pena actualizar a VS2010 Ultimate para aprovechar las funciones avanzadas de depuración?
- 26. Primera prueba TDD sin excepción/espera esperada. ¿Vale la pena?
- 27. Cross Platform Desarrollo móvil ¿vale la pena o no?
- 28. Integridad referencial en un almacén de datos relacionales. ¿Vale la pena? y cuales son las alternativas?
- 29. ¿Vale la pena aprender Smarty para plantillas PHP?
- 30. php type checking for method parameters - ¿Vale la pena?
Si almacena datos en un objeto, puede iterar sobre el objeto implementando ArrayAccess o ArrayIterator, pero los datos subyacentes aún se almacenan en una matriz de PHP simple. Los arrays regulares están bien, si desea almacenar datos en un objeto, implemente uno de los [iteradores] (http://www.php.net/manual/en/spl.iterators.php) a su discreción. – drew010