Usuario:ManuelRomero/PHP/autoload

https://medium.com/tech-tajawal/php-composer-the-autoloader-d676a2f103aa

Para cargar de forma automática las clases ya hemos visto como realizar un autoload de cada clase que necesitemos. Para ello escribimos el código en la función anónima que recibe en callback como argumento la función spl_autload_register. Suponiendo que las clases las tenemos en el directorio Classes del proyecto
 * Esto también lo podríamos poner escrbiendo la función nominada

Puedes comprobar los ficheros cargados en un momento dado invocando a la función get_included_files que te devuelve un array con todos los ficheros cargados. Este método presenta el inconveniente que o bien tienes todas las clases implementadas en un mismo directorio, o bien en la función de autocarga busca en directorios según el nombre de la clase, lo cual puede ser muy incómodo y poco productivo.
 * Esto está bien, y hace que sólo estén cargados los ficheros que necesitemos en un momento dado

Por supuesto, siguiendo las buenas prácricas de programación, seguimos escribiendo cada clase en un fichero con el mismo nombre de la clase que implementa.
 * Estaría bien un software que le podamos decir en un fichero dónde se ubican cada clase de nuestro proyecto, y que luego se pueda cargar automáticamente el fichero cuando sea necesario disponer de él
 * Para este comentidoo podemos usar ello vamos a usar composer que tiene diferentes opciones que pueden satisfacer esta necesidad. Analizaremos dos de ellas classmap y PSR-4.

Composer es lo que se conoce como un orquestador, es decir un software que va a permitir que mi aplicación (la orquesta) funcione bien usando diferentes ficheros y diferentes librerías (los instrumentos de la orquesta). Composer se va a encargar de buscar los ficheros y librerías necesarias con la versión correspondiente para que todo funcione correctamente. Por supuesto, todo lo que necesitamos lo tendremos que especificar en un fichero. Este fichero se llama ''composer.json' ahora escribimos un fichero composer
 * Vemos como ''composer' realiza todo lo que necesitamos
 * Veamos el ejemplo.
 * Creamos una estructura de directorios
 * En cada directorio creamos clases, para el ejemplo solo muestran un texto
 * Esto para cada una de las clases.
 * a continuación actulizamos composer
 * Podemos ver cómo composer ha creado una estructura de carpetas donde ya tiene localizadas todas las clases del proyecto

 $baseDir . '/Classes/A.php',    'B' => $baseDir . '/Classes/B.php',    'C' => $baseDir . '/Classes/class2/C.php',    'D' => $baseDir . '/Classes/class3/D.php',    'E' => $baseDir . '/Classes/class3/E.php', ); ?> Si añadimos nuevos ficheros necesitamos hacer adding new files requires composer dumpautoload to regenerate the mapping.
 * Podemos ver el resultado

Usando PSR4

 * https://styde.net/curso-de-laravel-5-que-es-psr-4-y-uso-de-los-namespaces/
 * Una alternativa más interesante que classmap va a ser psr4.
 * Con ella conseguimos no tener que volver a invocar a composer, cada vez que añadamos nuevas clases
 * Hace la ejecución mucho más rápida, aunque al pricipio da la impresion de mas engorroso y menos sencillez.
 * psr-4, está basado en el nombre de espacios o namespace
 * psr-4, está basado en el nombre de espacios o namespace

namespace

 * Es una forma de organizar nuestras clases. para que podamos usar incluso clases con el mismo nombre (cada una de ellas que tenga un nombre de espacio diferente
 * para ello ponemos en una clase un nombre al principio de la clase
 * Todas las clases de ese directorio pertenecerán la mismo namespace


 * Con ella no vamos a tener que regenerar el composer cada vez que añadamos una clase
 * Añadimos en composer.json