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.