Fournisseur de services
Semblable à Laravel, un module peut inclure un ou plusieurs fournisseurs de services. En général, les fournisseurs de services sont utilisés pour enregistrer et initialiser des services. C’est également l’endroit où vous utiliserez vos filtres, actions et événements pour les modifier, les intercepter et les écouter.
Les prestataires de services sont chargés automatiquement lorsqu’un module est activé, et tous les services ainsi que les autres configurations qu’il définit sont injectés dans le cycle de requêtes de NexoPOS.
Tout au long de ce processus, nous supposerons que notre espace de noms de module est « MyModule ».
Créer des prestataires de services
Un fournisseur de services doit être créé dans le dossier « Providers » du module. Le nom de la classe et le fichier doivent correspondre afin d’assurer la compatibilité avec le chargement automatique PSR-4.
<?php
namespace Modules\MyModule\Providers;
use Illuminate\Support\ServiceProvider as CoreServiceProvider;
class ServiceProvider extends CoreServiceProvider
{
// ...
}
Méthode : enregistrer
La méthode register est l’endroit où le conteneur de services est utilisé pour enregistrer des éléments (des services). C’est aussi l’endroit où vous pouvez écouter des événements et enregistrer vos actions et filtres.
<?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éthode : démarrage
La même logique qui s’applique à la méthode « boot » de Laravel depuis les fournisseurs de services s’applique également à cette méthode. Cette méthode est appelée juste après la méthode « register » de tous les modules activés.