Todo el mundo habla de composer y ahora las dependencias de los proyectos de PHP son gestionados por este, valga la redundancia, gestor.

En este post explicaré por qué usar composer, cómo usarlo, instalarlo y cómo funciona a grandes rasgos.

Cómo instalar Composer para gestionar dependencias de PHP

Ya he escrito un tutorial anteriormente, míralo aquí.

¿Por qué usar composer?

Todo proyecto de PHP, en algún momento, llega a necesitar dependencias. Por ejemplo, una librería que te facilita las cosas.

Es ahí cuando las dependencias entran en juego. Normalmente tú dirás “No pasa nada, descargo las clases y archivos de la librería y listo”; tendrás razón pero ahora veamos las desventajas:

  • Si quieres actualizar la librería (qué tal si se encontró una vulnerabilidad) tienes que eliminarla, descargar la nueva y adaptarla
  • En caso de que le pases tu proyecto a un amigo o lo publiques en internet, las demás personas tendrán que descargar manualmente las librerías
  • Dentro del código tienes que hacer miles de includes o requires para tener todos los paquetes
  • Por si olvidas una dependencia, nadie estará ahí para recordártelo

Es por ello que composer viene a solucionar esos problemas, aparte de que proporciona un entorno en donde todos pueden publicar librerías.

Cómo usar composer en PHP

El uso es fácil, una vez que ya tengas composer instalado puedes comenzar un proyecto con:

composer init

Ello creará un composer.json que es en donde está la lista de dependencias y otras cosas, así como una carpeta llamada vendor que será en donde pondrá tus dependencias.

Normalmente los programadores que publican su librería te dan una pista de cómo instalar la dependencia. Por ejemplo, para instalar libmergepdf es:

composer require iio/libmergepdf:^4.0

Lo único que tienes que hacer es ejecutarlo. O sea que la sintaxis es:

composer require autor/librería

Pero a veces, si necesitas una versión específica se puede poner con los dos puntos. En este caso ^:4.0 significa superior a la versión 4.

Las dependencias y las dependencias de desarrollo

Hay algunas dependencias (dependencies) que son usadas por tu proyecto y otras llamadas dev-dependencies que usas durante el desarrollo pero que no están disponibles a la hora de publicar o sacar tu proyecto; o sea, solamente las usas tú como programador.

Usar composer en PHP

Bueno, ya vimos cómo funciona y todo eso pero no hemos visto código. Como lo dije, composer genera una carpeta vendor y dentro de ella un autoload.php.

Lo que tienes que hacer es incluir el autoload en donde quieras usar las librerías o clases, y listo.

Por ejemplo, tengo un proyecto vacío pero con unas librerías y se ve así:

Proyecto de composer recién creado

Proyecto de composer recién creado

Dentro de mi proyecto voy a crear un archivo index.php (podría tener otro nombre) y requiero el autoload.php así:

Eso es lo único necesario, de ahí ya puedo usar todas las clases, librerías y paquetes con el simple hecho de requerir el autoload. Su nombre lo dice: es autoload, es decir, autocarga las librerías y paquetes.

Si en el futuro se agregan más librerías, serán cargadas de manera automática.

Actualizar librerías

Si crees que es hora de actualizar tus librerías o estás obligado a hacerlo, hazlo con:

composer update

Instalar librerías con composer

Si alguien te pasó su proyecto que ya tiene composer.json entonces tienes que instalar las librerías. Por ello es que debes ejecutar:

composer install

Eso leerá el composer.json e instalará la última versión de las librerías. ¿Fabuloso, no?

¿Cómo funciona composer a grandes rasgos?

No soy experto ni he mirado el código del gestor, pero así funciona:

  • Lee el archivo composer.json
  • Si no lo encuentra, indica error y termina
  • Instala las dependencias en la carpeta vendor. Por cada una descarga el código del repositorio oficial, y lo pone en tu vendor
  • Genera un archivo composer.lock que indica la última vez que instalaste o actualizaste librerías, así, en caso de error o de que algo falle, se vuelve a esa versión
  • Pone dentro del autoload el código que carga a otro autoload que a su vez requiere los paquetes

Eso fue a grandes rasgos, pero obviamente el gestor es muchísimo más que eso.

Cargar nuestro código

A veces necesitamos cargar más código además del que tienen las librerías, si ese es tu caso entonces mira cómo cargar tus propias clases con Composer en este post.

Estoy interesado en trabajar contigo de manera remota para llevar tu idea a la realidad, formar parte de tu equipo de desarrolladores, ayudarte con tu tarea, dar asesorías y todo lo relacionado con tecnología y programación. Contáctame para más información
No te vayas sin seguirme en Twitter, Facebook y GitHub
Si tienes dudas déjalas en un comentario, pero asegúrate de seguirme antes como agradecimiento (no te cuesta nada y me ayudas mucho)


parzibyte

He trabajado por más de 4 años en el desarrollo de software con experiencia en Java, PHP, JavaScript, HTML, Node.JS, Python, Android y Go. También he trabajado con bases de datos SQL como MySQL y SQLite, así como con bases de datos NoSQL usando MongoDB. Soy bueno utilizando algunos frameworks y herramientas como Firebase, jQuery, AngularJS, VueJS, CodeIgniter, Laravel, BulmaCSS, Bootstrap y Electron. Otros términos que conozco son: Arduino, GraphQL, API's, REST, AJAX, PouchDB, CouchDB, Experiencia de usuario, buenas prácticas de programación, Webpack, NPM, Administración de servidores y programación de scripts La plataforma en la que tengo más experiencia es la web, pero en mis ratos libres realizo unos pequeños ejercicios en C# y C. Estoy aquí para ayudarte a resolver tus problemas de programación y depuración :-)

1 Comment

Configurar, descargar e instalar composer (gestor de dependencias) - Parzibyte's blog · febrero 11, 2019 a las 1:28 pm

[…] eres nuevo en esto de Composer mira por qué deberías usarlo y sus primeros pasos. En caso de que tengas un proyecto pero quieras adaptarlo mira este […]

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

A %d blogueros les gusta esto: