Creando tu propio paquete en composer

Con el comando composer init, podemos iniciar el generador interactivo composer.json que usaremos más adelante para distribuir nuestro paquete. El generador interactivo plantea varias preguntas, según el siguiente resultado:

Aquí usamos foggyline como nuestro nombre de proveedor, mientras que mp7 se usó para el nombre del paquete. Al finalizar, el archivo composer.json se genera con el siguiente contenido:

{
"name": "foggyline/mp7",
"description": "Just a test package.",
"type": "library",
"license": "MIT",
"authors": [
{
"name": "Branko Ajzele",
"email": "ajzele@gmail.com"
}
],
"require": {}
}

Ahora, avancemos y creemos el archivo: src/Foggyline/MP7/Greeting/Goodbye.php relativo al directorio raíz del proyecto, con el siguiente contenido:

<?php
namespace FoggylineMP7Greeting;
class Welcome
{
public function generate($name)
{
return 'Welcome ' . $name;
}
}

Esta es nuestra clase de biblioteca ficticia que pronto distribuiremos como paquete compositor. Antes de hacerlo, debemos modificar composer.json agregando el top-level autoload, de la siguiente manera:

"autoload": {
"psr-4": {
"FoggylineMP7": "src/Foggyline/MP7/"
}
}

Para probar si autoload está configurado correctamente, ejecutamos el comando en consola composer dump-autoload –optimize y creamos el archivo index.php con el siguiente contenido. Usamos deliberadamente la ruta completa al directorio MP7, ya que esta será nuestra biblioteca individual, es decir, el paquete:

<?php
require_once __DIR__ . '/vendor/autoload.php';
use FoggylineMP7GreetingWelcome;
$greeting = new Welcome();
echo $greeting->generate('John');

Si todo salió bien, ejecutar este script debería darnos una salida de Bienvenida a John. Ahora que tenemos composer.json que describe nuestro proyecto y src/Foggyline/MP7/ que contiene nuestro código de biblioteca, podemos continuar y distribuir esto.

Comparte