Usuario:ManuelRomero/ProgramacionWeb/Composer

De WikiEducator
Saltar a: navegación, buscar

Composer

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



Icon define.gif
¿Qué es Composer?

Del mismo modo que un director de orquesta coordina a todos los instrumentos para que la música suene de forma armoniosa, Composer actúa como un orquestador del proyecto PHP. Su función principal es gestionar de forma unificada todos los paquetes, librerías y dependencias que una aplicación necesita para funcionar correctamente.




Icon define.gif
¿Qué hace Composer?

Entre sus funciones principales, Composer me permite:

  • Gestionar automáticamente la autocarga (autoload) de las clases, evitando tener que hacer includes o requires manuales.
  • Instalar librerías y paquetes de terceros dentro de mi proyecto de forma rápida, segura y organizada.




Icon define.gif
Otras funcionalidades importantes de Composer

Además del autoload y la instalación de dependencias, Composer también:

  • Mantiene un fichero de metainformación del proyecto en composer.json, donde se define:
    • autor
    • versión del proyecto
    • licencia
    • dependencias y versiones compatibles
    • scripts personalizados
    • configuración del autoload
  • Controla las versiones exactas instaladas mediante composer.lock, garantizando que todo el equipo trabaja con las mismas librerías.
  • Permite actualizar dependencias de forma controlada con comandos como:
    • composer update
    • composer outdated
  • Facilita compartir el proyecto con otros desarrolladores sin incluir las librerías, gracias a:
    • composer install
  • Permite usar paquetes creados por la comunidad a través de Packagist, el repositorio central de Composer.


Carga automática de clases

  • Hasta ahora hemos visto cómo realizar una carga automática simple mediante la función spl_autoload_register().

Este método permite cargar clases automáticamente sólo cuando se necesitan, evitando múltiples include o require.*

  • Ejemplo: autocarga básica suponiendo que todas las clases están en el directorio Clases/*
spl_autoload_register(function($clase){
    require "Clases/$clase.php";
});
  • También podemos usar una función nominada:*
function autocarga($clase){
    require "Clases/$clase.php";
}
 
spl_autoload_register('autocarga');
  • O una función flecha:*
$carga = fn($clase) => require "Clases/$clase.php";
spl_autoload_register($carga);
  • Este sistema funciona correctamente, pero presenta limitaciones:*
  • Todas las clases deben estar en un mismo directorio **o**
  • La función debe buscar en múltiples rutas según reglas que tú tengas que programar.
  • No escala bien en proyectos grandes.
  • No organiza la estructura del proyecto.
Puedes ver los ficheros cargados en cada momento con: