Home
NexoPOS

Fornitore di servizi

Simile a Laravel, un modulo può includere uno o più service provider. Di solito, i service provider vengono utilizzati per registrare e avviare i servizi. È anche il luogo in cui userai i tuoi filtri, azioni ed eventi per modificarli, intercettarli e ascoltarli.

I fornitori di servizi vengono caricati automaticamente quando un modulo è abilitato e tutti i servizi e le altre configurazioni che definisce vengono iniettati nel ciclo di richiesta di NexoPOS.

In tutto questo, supporremo che lo spazio dei nomi del nostro modulo sia "MyModule".

Creazione di fornitori di servizi

Un provider deve essere creato nella cartella "Providers" del modulo. Il nome della classe e il file devono corrispondere per garantire la compatibilità con il caricamento automatico PSR-4.

<?php
namespace Modules\MyModule\Providers;

use Illuminate\Support\ServiceProvider as CoreServiceProvider;

class ServiceProvider extends CoreServiceProvider
{
    // ...
}

Metodo: registrati

Il metodo di registrazione è il punto in cui si usa il service container per registrare le cose (i servizi). È anche il punto in cui puoi ascoltare gli eventi e registrare le tue azioni e i filtri.

<?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' ]);
    }
}

Metodo: avvio

La stessa logica che funziona per il metodo boot di Laravel dai service provider si applica anche a questo metodo. Questo metodo viene chiamato subito dopo il metodo "register" di tutti i moduli abilitati.