Diferencia entre revisiones de «Usuario:ManuelRomero/ProgramacionWeb/Composer»
De WikiEducator
| Línea 43: | Línea 43: | ||
}} | }} | ||
| − | + | ===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/'''* |
| − | + | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
<source lang=php> | <source lang=php> | ||
| − | + | spl_autoload_register(function($clase){ | |
| − | + | require "Clases/$clase.php"; | |
| − | + | }); | |
| − | + | ||
| − | + | ||
| − | } | + | |
</source> | </source> | ||
| − | * | + | *También podemos usar una función nominada:* |
<source lang=php> | <source lang=php> | ||
| − | + | function autocarga($clase){ | |
| − | + | require "Clases/$clase.php"; | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
} | } | ||
| − | |||
| − | + | spl_autoload_register('autocarga'); | |
| − | + | ||
| − | + | ||
| − | + | ||
</source> | </source> | ||
| − | * | + | *O una función flecha:* |
| − | + | ||
| − | + | ||
| − | + | ||
<source lang=php> | <source lang=php> | ||
| − | + | $carga = fn($clase) => require "Clases/$clase.php"; | |
| − | require " | + | spl_autoload_register($carga); |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
</source> | </source> | ||
| − | + | *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: | |
| − | + | ||
Revisión de 20:31 16 nov 2025
Composer
https://medium.com/tech-tajawal/php-composer-the-autoloader-d676a2f103aa
|
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. |
|
Entre sus funciones principales, Composer me permite:
|
|
Además del autoload y la instalación de dependencias, Composer también:
|
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.