Desde la salida de PHP5 se encuentran discusiones a lo largo de internet sobre el uso de las funciones originales include y require y la que fue entonces nueva autoload ( carga perezosa, carga bajo demanda o funcion mágica ) y su reflejo en el rendimiento de los scripts en ejecución.
Como suele ocurrir al ir añadiendo funcionalidades y comodidades se aumenta la carga de trabajo y/o la memoria usada para la aplicación en cuestión.
include y require como es sabido se diferencian en que uno añade los archivos y sigue la ejecución del script aun con fallos ( lanzando un aviso o warning) y el otro detiene el script si falla la carga.
include_once y require_once realizan la misma función evitando duplicidades, comprobando que no se hayan incluido previamente esos archivos. Debido a esto son ligeramente más lentas que las anteriores.
El _autoload permite carga un archivo bajo demanda, realizando una búsqueda en los directorios de código fuente php que tengamos configurado de ese archivo. Esto implica una disciplina de nombrado de archivos y de "una clase por archivo", aparte de una organización de los directorios php. Se complementa con spl_autoload_register y spl_autoload_extensions para añadir más funciones o cargadores. Esta libertad viene a un coste en rendimiento un poco mayor que con include_once o require_once, aunque puede variar segun los sistemas y circunstancis incluyendo optimizadores y cachés, y es muy utilizado en frameworks o en situaciones que requieren un manejo dinámico de datos o de fuentes sin concretar.
En general parece que el consenso general es hacer un seguimiento minucioso y responsable de los includes, y emplearse autoload cuando el numero de librerias es abrumador y hace dificil saber donde va que y que va donde, o hay varios frameworks o entornos en el mismo sistema, asi como emplear herramientas de testeo, profiling y benchmarking para dar con el sistema adecuado.
¿Debería Mapaxe emplear autoload, seguir con require, combinar ambas, ...?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Desde la salida de PHP5 se encuentran discusiones a lo largo de internet sobre el uso de las funciones originales include y require y la que fue entonces nueva autoload ( carga perezosa, carga bajo demanda o funcion mágica ) y su reflejo en el rendimiento de los scripts en ejecución.
Como suele ocurrir al ir añadiendo funcionalidades y comodidades se aumenta la carga de trabajo y/o la memoria usada para la aplicación en cuestión.
include y require como es sabido se diferencian en que uno añade los archivos y sigue la ejecución del script aun con fallos ( lanzando un aviso o warning) y el otro detiene el script si falla la carga.
include_once y require_once realizan la misma función evitando duplicidades, comprobando que no se hayan incluido previamente esos archivos. Debido a esto son ligeramente más lentas que las anteriores.
El _autoload permite carga un archivo bajo demanda, realizando una búsqueda en los directorios de código fuente php que tengamos configurado de ese archivo. Esto implica una disciplina de nombrado de archivos y de "una clase por archivo", aparte de una organización de los directorios php. Se complementa con spl_autoload_register y spl_autoload_extensions para añadir más funciones o cargadores. Esta libertad viene a un coste en rendimiento un poco mayor que con include_once o require_once, aunque puede variar segun los sistemas y circunstancis incluyendo optimizadores y cachés, y es muy utilizado en frameworks o en situaciones que requieren un manejo dinámico de datos o de fuentes sin concretar.
En general parece que el consenso general es hacer un seguimiento minucioso y responsable de los includes, y emplearse autoload cuando el numero de librerias es abrumador y hace dificil saber donde va que y que va donde, o hay varios frameworks o entornos en el mismo sistema, asi como emplear herramientas de testeo, profiling y benchmarking para dar con el sistema adecuado.
¿Debería Mapaxe emplear autoload, seguir con require, combinar ambas, ...?