Crear paquete para Laravel con composer

Share on facebook
Facebook
Share on twitter
Twitter
Share on email
Email

Una de las ventajas de Laravel es que podemos escribir bibliotecas donde simplemente podemos llamar a sus servicios sin preocuparnos de cómo se implementó. Podemos reutilizar estas bibliotecas y administrarlas por separado del código fuente principal de nuestro proyecto y a estas bibliotecas en Laravel se les llaman paquetes.

Los paquetes son la forma principal de agregar funcionalidad a Laravel.

Existen diferentes tipos de paquetes. Algunos paquetes son independientes, lo que significa que funcionan con cualquier marco PHP. Carbon y Behat son ejemplos de paquetes independientes. Cualquiera de estos paquetes puede usarse con Laravel solicitándolos en su archivo. composer.json

Por otro lado, otros paquetes están destinados específicamente para su uso con Laravel. Estos paquetes pueden tener rutas, controladores, vistas y configuraciones específicamente diseñadas para mejorar una aplicación Laravel. Esta guía cubre principalmente el desarrollo de aquellos paquetes que son específicos de Laravel.

Iniciaremos asumiendo que ya esta funcionando una instalación limpia de Laravel como lo explicamos anteriormente.

Crear directorio del paquete

Sabemos que nuestros paquetes instalados viven dentro del directorio de proveedores y eso se ignora por defecto. Tampoco se supone que modifiquemos el código directamente desde el directorio de proveedores.

Entonces, creemos una carpeta desde el directorio raíz laravel con esta estructura:

aplicación / paquetes / nombre_proveedor / nombre_paquete / src

para esta practica quedaria así:

blog/paquetes/grupoefe/mipaquete/src

Iniciación con composer

Necesitamos iniciar nuestro paquete usando Composer para que el paquete pueda instalarse en Laravel como proveedor más adelante.

Usando la terminal, navegue a la carpeta del paquete en este caso blog/paquetes/grupoefe/mipaquete, y ejecute el siguiente comando:

composer init

Siga las instrucciones del compositor, si no sabe cómo responder, simplemente presione Intro para usar la respuesta predeterminada.

{
    "name": "grupoefe/mipaquete",
    "description": "Paquete para laravel",
    "authors": [
        {
            "name": "Angel Figueroa",
            "email": "afigueroa@grupoefe.net"
        }
    ],
    "require": {}
}

Después de la inicialización, debemos editar el archivo composer.json recién generado para agregar el service provider al autoload, quedando como se muestra a continuación.

{
    "name": "grupoefe/mipaquete",
    "description": "Paquete para laravel",
    "authors": [
        {
            "name": "Angel Figueroa",
            "email": "afigueroa@grupoefe.net"
        }
    ],
    "require": {},
    "autoload": {
        "psr-4": {
            "GrupoEFE\\MiPaquete\\": "src/"
        }
    }
}

Creamos nuestro Service Provider

Para esto debemos crear un archivo llamado MiPaqueteServiceProvider.php en la carpeta src y agregamos el siguiente código.

<?php

namespace GrupoEFE\MiPaquete;

use Illuminate\Support\ServiceProvider;

class MiPaqueteServiceProvider extends ServiceProvider
{
    /**
     * Register services.
     *
     * @return void
     */
    public function register()
    {

    }

    /**
     * Bootstrap services.
     *
     * @return void
     */
    public function boot()
    {

    }

}

Ya con esto tenemos lo necesario para el paquete, pera falta hacer que él paquete haga algo.

Función de prueba

Crearemos un archivo routes.php en el directorio src de nuestro paquete con el siguiente contenido.

<?php

Route::get('/test', function () {
    return "OK";
});

Agregamos las rutas a la aplicacion registrandolas en service provider, para esto editamos el service provider que creamos debiendo quedar asi.

<?php

namespace GrupoEFE\MiPaquete;

use Illuminate\Support\ServiceProvider;

class MiPaqueteServiceProvider extends ServiceProvider
{
    /**
     * Register services.
     *
     * @return void
     */
    public function register()
    {
        $this->loadRoutesFrom(__DIR__.'/routes.php');
    }

    /**
     * Bootstrap services.
     *
     * @return void
     */
    public function boot()
    {

    }

}

Hasta aquí ya tendríamos un paquete que podríamos publicar en github, bitbucket etc. para que pueda ser agregado desde composer a cualquier otra aplicación.

Probando el paquete

Para saber si todo funciona correctamente, vamos a agregar el paquete a nuestro autoload-dev de la aplicación, esto lo hacemos editando el archivo composer.json de nuestra aplicación y agregando en el autoload-dev nuestro service provider.

    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/",
            "GrupoEFE\\MiPaquete\\": "paquetes/grupoefe/mipaquete/src/"
        }
    },

Agregamos nuestro service provider al archivo app.php dentro de la carpeta config.

        /*
         * Package Service Providers...
         */
        GrupoEFE\MiPaquete\MiPaqueteServiceProvider::class,

Ejecute el siguiente comando en la carpeta raíz de la aplicación y listo ya estaría funcionando el paquete.

composer dump-autoload

Podría Interesarte

Verificación por Correo en Laravel

Verificar que el usuario es una persona real cada día es mas necesario y la verificación por correo nos brinda cierta seguridad de esto.