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.