Qué es Composer y por qué deberías usarlo en tus proyectos de PHP

Si desarrollas en PHP y no conoces Composer, te invito a que te quedes a leer el artículo. Cuando termines de leer, vas a querer ponerlo en práctica y usarlo en todos tus proyectos.

Composer, en resumidas palabras, es el gestor de paquetes de PHP.

Cuando estás desarrollando un proyecto, seguramente empiezas a necesitar librerías. Una forma no muy recomendable de hacerlo es que vayas tú mismo y busques las librerías que necesitas, las descargues y las incluyas en tu proyecto. ¿Cuál es el inconveniente de esto? Que si necesitas actualizar la versión de las librerías, tendrías que volver a repetir el proceso. Peor sería que algunas de las librerías que uses dependan a su vez de otras librerías y tengas que ir descargándolas. Este proceso se podría volver tremendamente tedioso.

Otro caso también es que por ejemplo necesites desplegar tu proyecto en un servidor. Si no usas Composer, vas a tener que estar copiando todas tus dependencias, archivo por archivo.

¿Qué hace Composer?

A través de un único archivo de configuración (composer.json) puedes definir todas tus dependencias de una forma muy sencilla y te va a permitir instalarlas con un solo comando. Por otro lado también vas a poder hacer llamadas de clases entre tus distintos archivos sin que entren en conflicto entre sí.

¿Qué necesitas para usar Composer?

Si usas Windows 10, puedes directamente descargar el ejecutable de la web oficial haciendo click aquí.

Si usas Ubuntu o Debian, es un proceso un poco más largo, el cual redactaré próximamente en un artículo aparte.

Define tus dependencias

A continuación vemos un ejemplo de cómo quedaría un sencillo archivo de configuración para un proyecto que dependa de jquery, dompdf y phpmailer:

				
					{
	"name": “ncksnt481/mi-proyecto”,
	"require": {
		"components/jquery" : "3.3.1",
		"dompdf/dompdf" : "1.2.1"
		"phpmailer/phpmailer" : "6.6.0"
        }
}

				
			

Autocarga de clases con PSR-4

PSR-4 es una especificación para poder hacer autocarga de clases desde dentro de un namespace. Una autocarga o "autoloader" nos permite encontrar clases PHP cuando hacemos llamadas con las funciones new() o class_exists.

¿Qué es un namespace? es una forma de agrupar código y evitar problemas entre clases y se crea usando la palabra reservada namespace.

Es decir, con esto, desde cualquier parte de nuestro código vamos a poder cargar clases sin tener que usar los require o includes y vamos a evitar muchos problemas a su vez.

				
					{
	"name" : "ncksnt481/mi-proyecto",
	"require" : {
		"components/jquery" : "3.3.1",
		"dompdf/dompdf" : "1.2.1"
		"phpmailer/phpmailer" : "6.6.0"
        },
"autoload" :{
	"psr-4" : {
		"Test\\" : "src/Admin"
        }
    }
}

				
			

Imagina que dentro del directorio src/Admin tengo una clase llamada Login.php. El archivo Login.php tendría la siguiente estructura:

				
					<?php

namespace Test;

class Login {
	public function __construct(){
		echo "test";
    }
}

				
			

Un poco más adelante, una vez instalamos las dependencias, te digo cómo llamar a la autocarga en tu index.php.

En este archivo podemos incluir muchas más cosas pero en principio con esto nos basta por ahora. 

Una vez ya definidas las dependencias, procedemos a instalarlas con el siguiente comando:

				
					composer install
				
			

Una vez ejecutado el comando, Composer irá descargando e instalando las distintas dependencias. Mencionar que nosotros como desarrolladores también podemos crear nuestros propios paquetes y subirlos a la web.

Cuando la instalación ha finalizado, podemos observar que se ha creado un directorio llamando “vendor” donde se encuentran descargadas todas las librerías que hemos definido en el composer.json.

Por último, nos vamos a nuestro index.php y llamamos al archivo autoload.php para poder usar las dependencias en cualquier parte del código:

				
					<?php

require "vendor/autoload.php";

// Llamando a la clase Login
$login = new \Test\Login;

				
			

Conclusión

Como has podido observar, el proceso ha sido muy sencillo y de una forma rápida y eficaz puedes tener todas tus dependencias instaladas y actualizadas así como también usar namespaces y llamar a clases en cualquier parte del código sin que entre en conflicto entre sí. Te animo a que lo pruebes y cualquier duda que tengas, puedes escribir en los comentarios o directamente en el hilo del foro.

Compartir este artículo

¡Me gusta este artículo!

7

Artículos relacionados

    Deja un comentario

    ¡Gracias por dejar tu comentario!

    Entradas recientes