Proveedor de servicios
Similar a Laravel, un módulo puede incluir uno o varios proveedores de servicios. Por lo general, los proveedores de servicios se utilizan para registrar e iniciar servicios. También es el lugar donde usarás tus filtros, acciones y eventos para modificarlos, capturarlos y escucharlos.
Los proveedores de servicios se cargan automáticamente cuando se habilita un módulo, y todos los servicios y demás configuraciones que define se inyectan en el ciclo de solicitudes de NexoPOS.
A lo largo de esto, asumiremos que nuestro espacio de nombres del módulo es «MyModule».
Creación de proveedores de servicios
Se debe crear un proveedor de servicios dentro de la carpeta "Providers" del módulo. El nombre de la clase y el archivo deben coincidir para garantizar la compatibilidad con el autocargado PSR-4.
<?php
namespace Modules\MyModule\Providers;
use Illuminate\Support\ServiceProvider as CoreServiceProvider;
class ServiceProvider extends CoreServiceProvider
{
// ...
}
Método: registrar
El método register es el lugar donde se utiliza el contenedor de servicios para registrar cosas (servicios). También es el lugar donde puedes escuchar eventos y registrar tus acciones y filtros.
<?php
namespace Modules\MyModule\Providers;
use Illuminate\Support\ServiceProvider as CoreServiceProvider;
use Illuminate\Support\Facades\Event;
use App\Events\AfterSuccessfulLoginEvent;
use Modules\MyModule\Filters\MyFilters;
use Modules\MyModule\Events\MyEvent;
class ServiceProvider extends CoreServiceProvider
{
public function register()
{
// registering a module
Hook::filter( 'ns.dashboard-menus', [ MyFilters::class, 'addMenus' ]);
// registering a service
$this->app->singleton( MyModuleService::class, fn() => new MyModuleClass( ns()->option->get( 'custom-option' ) ) );
// catch events
Event::listen( AfterSuccessfulLoginEvent::class, [ MyEvent::class, 'catchSuccessfulLogin' ]);
}
}
Método: arranque
La misma lógica que funciona en el método boot de Laravel en los proveedores de servicios se aplica también a este método. Este método se llama justo después del método “register” de todos los módulos habilitados.