viernes, 27 de marzo de 2015

Instalación de Composer

Composer es el gestor de paquetes para PHP del momento y, de hecho, es una muy buena herramienta para mantener controladas las dependencias de un un proyecto PHP. No tienes más que definir un archivo composer.json con las dependencias del proyecto y ya tienes un instalador limpio y bastante sofisticado.
Yo lo he instalado de forma global en el equipo:
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
Me resulta más cómodo que hacerlo localmente por proyecto.
Por el momento, este es el contenido del composer/json
{
    "name": "cakephpilia/academia",
    "description": "Educational platform",
    "homepage": "http://miralba.org",
    "type": "project",
    "license": "MIT",
    "require": {
        "php": ">=5.3"
    },
    "require-dev": {
    },

    "suggest": {
        "phpunit/phpunit": "Allows automated tests to be run without system-wide install."
    },
    "autoload": {
        "psr-4": {
            "Academia\\": "."
        }
    },
    "minimum-stability": "dev",
    "prefer-stable": true
}
De momento, lo más interesante es la configuración del autoloader ya que todavía no hay dependencias que cargar.
Composer incluye varias clases con las que configura un autoloader de los paquetes instalados y que se basa en el uso de espacios de nombres que coincidan con la organización del sistema de archivos (PSR-4). Para usarlo en el proyecto, básicamente tienes que indicar una clave "autoload" e indicar la relación entre la raíz del espacio de nombres y el directorio en el que se encuentra.
En mi caso, la raíz del espacio de nombres es "Academia". La doble barra invertida \\ es necesaria porque debes terminar la cadena con el separador de espacio de nombres "\" el cual, por ser un carácter especial, debe ir "escapado", precisamente con la barra invertida.
Finalmente, para usar el autoloader en el proyecto, he creado un archivo bootstrap.php provisional:


 # Uses composer autoload

 require_once __DIR__.'/vendor/autoload.php';
Este archivo se lo indico a phpunit para que puedan cargarse las clases y así no las importo explícitamente en los tests.
phpunit --bootstrap bootstrap.php --colors --verbose tests

No hay comentarios: