Inicio > PHP > Composer

COMPOSER

24/11/2017PHP

 

Composer es un gestor de dependencias de proyectos de 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 tiene que llamar 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
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. Normalmente se instala en el directorio Vendor del proyecto.
Packagist. es el repositorio de paquetes que son instalables por medio de Composer.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.