Blog de Gonzalo

COMPOSER

Composer es un gestor de dependencias para que permite gestionar (declarar, descargar y mantener actualizadas) las librerías en PHP que han desarrollado otros desarrolladores y que se va a usar en un proyecto. Cuando se empezaba un proyecto y se iban a usar librerías de terceros habia que ir a la página de cada librería descargarla, etc... y también había que estar pendiente de nuevas actualizaciones de las librerías y descargarlas y sin contar que muchas de estas librerías dependen de otras.
Cómo funciona Composer: Composer permite declarar las librerías que queremos usar en un proyecto, simplemente hay que escribir un archivo de configuración en el que le indica qué paquetes se necesitan. El archivo es un simple JSON en el que indicamos cosas como el autor del proyecto, las dependencias, etc... Dicho fichero se llama composer.json.
Ejemplo de declaracion de una dependencia:


{
    "name": "rutaProyecto/nombreProyecto",
     "require": {
	"respect/validation": "0.6.*",
	"phpunit/phpunit": ">=4.0",
	"tinymce/tinymce": "dev-master"
    }
}

En el ejemplo anterior el parámetro 'name' define el nombre del paquete, formado por una primera parte que hace referencia a su creador y una segunda parte que describe el nombre del proyecto. Las dos partes tienen que estar separadas por el carácter por la barra slash y el parámetro 'require' es un objeto con una serie de pares clave/valor que definen cada una de las dependencias que Composer debe instalar para nuestro proyecto. En la clave debemos de indicar el nombre del paquete que depende (se obtiene del sitio de Packagist) y como valor indicamos la versión que deseamos que esté instalada, o el rango de versiones.
Cuando se han declarado las depedencias hay que instalarlas con el comando: composer install. Pero cuando se quiere actualizar una dependencia, o todas, hay que ejecutar el comando composer update, para actualizar un paquete hay que ejecutar composer update vendor/package.
Cuando se carga este comando Composer se encargará de ir a los repositorios de paquetes de software y descargar aquellas librerías mencionadas, copiándolas en la carpeta de tu proyecto. Dichos paquetes se instalarán en el directorio vendor del proyecto.
Packagist, es el repositorio de paquetes que son instalables por medio de Composer. También es posible borrar una dependencia, o paquete con el comando composer remove vendor/package
En la página de Packagist hay un buscador para ver la cantidad de código disponible para usar en cualquier proyecto PHP: https://packagist.org/
Este es un tutorial breve pero creo que explica bastante bien y de forma básica como funciona Composer.
Una funcionalidad bastante útil de composer es poder configurar la funcionalidad de autoload de ficheros para los namespaces. Para ello es necesario editar el fichero composer.json y añadir:
{
//PSR-0
	{
	    "autoload": {
	        "psr-0": {
	            "MyNameSpace": "src/"
	        }
	    }
	}
//PSR-4	 
	{
	    "autoload": {
	        "psr-4": {
	            "MyNameSpace": "src/"
	        }
	    }
	}

En este ejemplo se usa el standard psr-0 y el standard psr-4, solo hay que usar uno de los dos, y se define el namespace: MyNameSpace y su ruta es: src y una vez guardado el fichero json se ejecuta el comando composer dump-autoload --optimize y veréis que se ha generado un directorio vendor con un fichero autoload.php y la carpeta composer. Con incluir el fichero autoload es suficiente.
Cuando se ejecuta el comando composer install se genera un fichero que se llama composer.lock y es muy importante no tocar este fichero contiene las versiones correctas de cada paquete instalado.
Os invito a leer mi post sobre los scripts en composer. Que son scripts que necesitamos al desplegar. Por ejemplo limpiar caches, etc...

Compartir en twitter