¿Qué es composer?

Ya en un articulo anterior explique cómo instalar composer? pero ¿qué es y para qué sirve?

Como su propia web lo describe, composer es un manejador de dependencias, es decir, todas aquellas clases PHP que hace uso nuestro proyecto y pero no desarrollamos nosotros.

En palabras sencillas

composer-esquema

composer.phar: precompilado ejecutable con el cual interactuamos para instalar, remover y actualizar paquetes.

packagist.org: sitio web y repositorio (sitio desde el cual se descargan los paquetes) principal de composer, nos permite buscar y examinar información de paquetes para usar en nuestro proyecto.

composer.json: archivo de configuración de composer para nuestro proyecto, es donde se especifican los paquetes que necesitamos, se coloca uno por cada proyecto.

Directorio vendor: los paquetes que especificamos en composer.json se descargan en una carpeta de nombre vendor que se coloca al mismo nivel que el archivo composer.json.

vendor/package: cuando intentas instalar un paquetes notarás que su nombre se compone de la estructura palabra1/palabra2, palabra1 es el identificador del autor o también conocido como vendor y palabra2 es el nombre del paquete, ejemplo:

intervention/image

donde intervention es el vendor y image el nombre del paquete. si un autor tiene varios paquetes la primera palabra permanece mientras que la segunda cambiará para cada paquete.

De esta misma forma se descargáramos un paquete por medio del composer, por ejemplo con:

php composer.phar require intervention/image

al terminal el proceso encontraríamos dentro de nuestra carpeta vendor un directorio de nombre intervention y dentro de este otro con el nombre image.

 

Para mayor información sobre las opciones del cli composer.phar recomiendo leer este articulo.

Cómo instalar Whoops en Laravel 5.1

whoops-ssLamentablemente Whoops el paquete que nos permitía en la versión 4 de Laravel tener una interfaz de debug linda y amigable no viene incluido por defecto en Laravel 5.x, sin embargo no es tan complicado agregarlo.

En la carpeta de nuestro proyecto en Laravel escribimos esto en la terminal:

~$ composer require filp/whoops

esto modificará nuestro archivo composer.json, e instalará whoops en el directorio vendor de nuestro proyecto.

Luego abrimos con el editor de texto de nuestra preferencia el archivo app/Exceptions/Handler.php y editamos el método render() de la siguiente forma:

/**
 * Render an exception into an HTTP response.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Exception  $e
 * @return \Illuminate\Http\Response
 */
public function render($request, Exception $e)
{
    if ($this->isHttpException($e))
    {
        return $this->renderHttpException($e);
    }


    if (config('app.debug'))
    {
        return $this->renderExceptionWithWhoops($e);
    }

    return parent::render($request, $e);
}

/**
 * Render an exception using Whoops.
 * 
 * @param  \Exception $e
 * @return \Illuminate\Http\Response
 */
protected function renderExceptionWithWhoops(Exception $e)
{
    $whoops = new \Whoops\Run;
    $whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler());

    return new \Illuminate\Http\Response(
        $whoops->handleException($e),
        $e->getStatusCode(),
        $e->getHeaders()
    );
}

Y eso es todo, ahora deberías tener tener whoops activo en tu proyecto.

 

Fuente: mattstauffer.co

Activar extensión Mcrypt de PHP en Ubuntu 15.10

Instalamos via gestor de paquetes del sistema operativo php5-mcrypt:

~$ sudo aptitude install php5-mcrypt

Luego lo habilitamos con el comando php5enmod:

~$ sudo php5enmod mcrypt

Si estamos trabajando con php y apache (que es lo mas común), para que el servidor web tome estos cambios debemos reiniciarlo:

~$ sudo service apache2 restart

 

Cómo instalar Composer

Estas instrucciones las puedes encontrar en la web de composer en su la sección download.

Abrimos una terminal y ejecutamos.

~$ curl -sS https://getcomposer.org/installer | php

Sino tenemos instalado curl podemos hacerlo a través del gestor de paquetes de nuestra distribución; si no podemos instalar curl podemos cambiar el comando de arriba por:

~$ php -r "readfile('https://getcomposer.org/installer');" | php

una vez hecho esto tendremos en nuestro computador un archivo de nombre composer.phar, el cual ejecutamos con:

~$ php composer.phar

y nos debe dar una salida parecida a esta:

   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.0-dev (b6bac0c2d31e4f84d607638277322d8d256e61af) 2015-11-29 17:21:38

Usage:
  command [options] [arguments]

Options:
  -h, --help                     Display this help message
  -q, --quiet                    Do not output any message
  -V, --version                  Display this application version
      --ansi                     Force ANSI output
      --no-ansi                  Disable ANSI output
  -n, --no-interaction           Do not ask any interactive question
      --profile                  Display timing and memory usage information
  -d, --working-dir=WORKING-DIR  If specified, use the given directory as working directory.
  -v|vv|vvv, --verbose           Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Available commands:
  about           Short information about Composer
  archive         Create an archive of this composer package
  browse          Opens the package's repository URL or homepage in your browser.
  clear-cache     Clears composer's internal package cache.
  clearcache      Clears composer's internal package cache.
  config          Set config options
  create-project  Create new project from a package into given directory.
  depends         Shows which packages depend on the given package
  diagnose        Diagnoses the system to identify common errors.
  dump-autoload   Dumps the autoloader
  dumpautoload    Dumps the autoloader
  global          Allows running commands in the global composer dir ($COMPOSER_HOME).
  help            Displays help for a command
  home            Opens the package's repository URL or homepage in your browser.
  info            Show information about packages
  init            Creates a basic composer.json file in current directory.
  install         Installs the project dependencies from the composer.lock file if present, or falls back on the composer.json.
  licenses        Show information about licenses of dependencies
  list            Lists commands
  remove          Removes a package from the require or require-dev
  require         Adds required packages to your composer.json and installs them
  run-script      Run the scripts defined in composer.json.
  search          Search for packages
  self-update     Updates composer.phar to the latest version.
  selfupdate      Updates composer.phar to the latest version.
  show            Show information about packages
  status          Show a list of locally modified packages
  suggests        Show package suggestions
  update          Updates your dependencies to the latest version according to composer.json, and updates the composer.lock file.
  validate        Validates a composer.json and composer.lock

Si te dio una salida parecida, eso quiere decir que ya tienes composer funcional en tu equipo. Ahora solo resta un ultimo paso, para tener composer de forma global y no tener que descargar el archivo en cada proyecto en el cual vayamos a trabajar, debemos mover nuestro archivo composer.phar al directorio /usr/local/bin:

~$ sudo mv composer.phar /user/local/bin/composer

Ahora si escribimos composer en nuestra terminal, sin importar el directorio donde nos encontremos, debería producirse la misma salida que cuando escribimos php composer.phar.

~$ composer
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.0-dev (b6bac0c2d31e4f84d607638277322d8d256e61af) 2015-11-29 17:21:38

Usage:
  command [options] [arguments]

Options:
  -h, --help                     Display this help message
  -q, --quiet                    Do not output any message
  -V, --version                  Display this application version
      --ansi                     Force ANSI output
      --no-ansi                  Disable ANSI output
  -n, --no-interaction           Do not ask any interactive question
      --profile                  Display timing and memory usage information
  -d, --working-dir=WORKING-DIR  If specified, use the given directory as working directory.
  -v|vv|vvv, --verbose           Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Available commands:
  about           Short information about Composer
  archive         Create an archive of this composer package
  browse          Opens the package's repository URL or homepage in your browser.
  clear-cache     Clears composer's internal package cache.
  clearcache      Clears composer's internal package cache.
  config          Set config options
  create-project  Create new project from a package into given directory.
  depends         Shows which packages depend on the given package
  diagnose        Diagnoses the system to identify common errors.
  dump-autoload   Dumps the autoloader
  dumpautoload    Dumps the autoloader
  global          Allows running commands in the global composer dir ($COMPOSER_HOME).
  help            Displays help for a command
  home            Opens the package's repository URL or homepage in your browser.
  info            Show information about packages
  init            Creates a basic composer.json file in current directory.
  install         Installs the project dependencies from the composer.lock file if present, or falls back on the composer.json.
  licenses        Show information about licenses of dependencies
  list            Lists commands
  remove          Removes a package from the require or require-dev
  require         Adds required packages to your composer.json and installs them
  run-script      Run the scripts defined in composer.json.
  search          Search for packages
  self-update     Updates composer.phar to the latest version.
  selfupdate      Updates composer.phar to the latest version.
  show            Show information about packages
  status          Show a list of locally modified packages
  suggests        Show package suggestions
  update          Updates your dependencies to the latest version according to composer.json, and updates the composer.lock file.
  validate        Validates a composer.json and composer.lock

 

Fuente: getcomposer.org