Início
NexoPOS

Fornecedor de Serviços

Semelhante ao Laravel, um módulo pode incluir um ou vários provedores de serviços. Normalmente, os provedores de serviços são usados para registrar e iniciar serviços. É também o lugar onde você usará seus filtros, ações e eventos para modificá-los, capturá-los e ouvi-los.

Os provedores de serviço são carregados automaticamente quando um módulo é ativado, e todos os serviços e outras configurações que ele define são injetados no ciclo de vida da requisição do NexoPOS.

Ao longo disso, vamos assumir que o namespace do nosso módulo é “MyModule”.

Criando Prestadores de Serviços

Um provedor de serviço deve ser criado dentro da pasta “Providers” do módulo. O nome da classe e o arquivo devem corresponder para garantir compatibilidade com o autoloading PSR-4.

<?php
namespace Modules\MyModule\Providers;

use Illuminate\Support\ServiceProvider as CoreServiceProvider;

class ServiceProvider extends CoreServiceProvider
{
    // ...
}

Método: registrar

O método register é o local onde o container de serviços é usado para registrar coisas (serviços). É também o lugar onde você pode ouvir eventos e registrar suas ações e 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: inicialização

A mesma lógica que funciona em o método boot do Laravel nos providers de serviço se aplica também a este método. Este método é chamado logo após o método “register” de todos os módulos habilitados.