Diferencia entre revisiones de «Usuario:ManuelRomero/ProgramacionWeb/Composer»

De WikiEducator
Saltar a: navegación, buscar
Línea 1: Línea 1:
 
<!--https://es.wikieducator.org/Usuario:ManuelRomero/PHP/autoload-->
 
<!--https://es.wikieducator.org/Usuario:ManuelRomero/PHP/autoload-->
 
<div id=seccion>
 
<div id=seccion>
https://medium.com/tech-tajawal/php-composer-the-autoloader-d676a2f103aa
+
 
<div class=parrafo>
+
 
==Composer==
 
==Composer==
<br />
+
 
{{MRM_Definicion|Title=Qué es composer|
+
<div class=parrafo>
Lo mismo que un ''''director de orquesta''''', organiza y dirige todos los instrumentos para que la música suene de forma armoniosa, '''''composer''''' va a ser '''''un orquestador''''' que gestionará todos '''''los paquetes y librerías''''' necesarias para que mi proyecto pueda funcionar correctamente como una unidad
+
 
 +
https://medium.com/tech-tajawal/php-composer-the-autoloader-d676a2f103aa
 +
 
 +
{{MRM_Definicion|Title=¿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.
 
}}
 
}}
{{MRM_Definicion|Title=Qué hace composer|
 
Entre otras acciones, ¡¡¡¡¡composer me va a permitir¡¡¡¡¡:
 
*Gestionar de forma automática '''''la autocarga de los ficheros''''' que implementan las clases que utilizo
 
*'''''Instalar librerías y paquetes''''' de terceros para incorporar a mis proyectos
 
  
 +
{{MRM_Definicion|Title=¿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.
 +
}}
 +
 +
{{MRM_Definicion|Title=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:
 +
** <code>composer update</code>
 +
** <code>composer outdated</code>
 +
 +
* Facilita compartir el proyecto con otros desarrolladores sin incluir las librerías, gracias a:
 +
** <code>composer install</code>
 +
 +
* Permite usar paquetes creados por la comunidad a través de '''Packagist''', el repositorio central de Composer.
 
}}
 
}}
  
 +
</div>
  
  
Línea 147: Línea 176:
 
* Las clases con namespace **MiProyecto** se cargarán desde la carpeta **src/**
 
* Las clases con namespace **MiProyecto** se cargarán desde la carpeta **src/**
 
* La clase:
 
* La clase:
 +
 +
</div>
 +
</div>

Revisión de 20:30 16 nov 2025

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.



  • Sería ideal tener un sistema que nos permitiera indicar dónde se encuentran las clases, generar automáticamente la autocarga y mantenerlo todo organizado.*

Para eso existe Composer, que incorpora diferentes estrategias para el autoload: classmap y PSR-4.



Icon key points.gif

Puntos clave

  • Cada clase en su propio fichero*
  • El fichero debe llamarse igual que la clase*



Usando Composer con classmap

  • Creamos una estructura de directorios, por ejemplo:*

Directorios autoload.png

  • Ejemplo de clase:*
<?php
class B {
    public function __toString() {
        return "Hola desde la clase B";
    }
}
  • Creamos el fichero composer.json indicando que Composer debe escanear el directorio Clases/:*
{
  "autoload": {
    "classmap": [
      "Clases"
    ]
  }
}
  • Actualizamos Composer para generar la carga automática:*
composer update
  • Composer crea automáticamente la carpeta vendor/ y genera el fichero de autocarga.*

Autoload composer.png

  • Ahora sólo tenemos que incluir el autoload en nuestro proyecto:*
<?php
require "vendor/autoload.php";
  • Si añadimos nuevos ficheros, recuerda regenerar el autoload:*
composer dumpautoload

---

Usando PSR-4

  • PSR-4 es el método moderno y recomendado de autocarga. Usa los namespaces para localizar las clases automáticamente sin necesidad de regenerar el autoload cada vez.*
  • Referencias recomendadas:*

https://styde.net/curso-de-laravel-5-que-es-psr-4-y-uso-de-los-namespaces/ https://diego.com.es/namespaces-en-php https://www.php.net/manual/es/language.namespaces.php

Espacio de nombres
  • Un namespace es una forma de organizar clases, funciones e interfaces evitando conflictos entre nombres.*
  • Es equivalente a la organización en directorios del sistema de ficheros.*

Ejemplo equivalente en archivos reales:

/home/profesor/dwes/notas.ods
/home/profesor/bd/notas.ods

Puedes tener dos clases con el mismo nombre si pertenecen a distintos namespaces.


Icon summary.gif
Objetivo

Los namespaces de PHP permiten agrupar clases, funciones, interfaces y constantes relacionadas.


Declarar un namespace

  • El namespace debe ser la primera línea del fichero (sin espacios previos).*
<?php
namespace MiProyecto;
  • También puede tener varios niveles separados por barras invertidas \':*
<?php
namespace MiProyecto\Nivel1\Subnivel2;


Icon summary.gif
Comentarios sobre namespaces
  • Cada namespace suele corresponder a un directorio.
  • No es obligatorio que coincidan exactamente, pero es buena práctica.*


---

PSR-4 en Composer

  • PSR-4 es más potente y elegante que classmap, y no requiere regenerar el autoload cuando se añaden nuevas clases.*
  • Se basa completamente en los namespaces.*

Ejemplo de configuración en composer.json:

{
  "autoload": {
    "psr-4": {
      "MiProyecto\\": "src/"
    }
  }
}

Esto significa:

  • Las clases con namespace **MiProyecto** se cargarán desde la carpeta **src/**
  • La clase:

</div>