You've already forked Php-Template
feat: implement custom event dispatcher and listener system #13
@@ -6,9 +6,10 @@ use Illuminate\Container\Container;
|
|||||||
use Illuminate\Database\Capsule\Manager;
|
use Illuminate\Database\Capsule\Manager;
|
||||||
use Illuminate\Support\ServiceProvider;
|
use Illuminate\Support\ServiceProvider;
|
||||||
use Siteworx\Config\Config as SWConfig;
|
use Siteworx\Config\Config as SWConfig;
|
||||||
use Siteworxpro\App\Events\Dispatcher;
|
|
||||||
use Siteworxpro\App\Services\Facade;
|
use Siteworxpro\App\Services\Facade;
|
||||||
use Siteworxpro\App\Services\Facades\Config;
|
use Siteworxpro\App\Services\Facades\Config;
|
||||||
|
use Siteworxpro\App\Services\Facades\Dispatcher;
|
||||||
|
use Siteworxpro\App\Services\ServiceProviders\DispatcherServiceProvider;
|
||||||
use Siteworxpro\App\Services\ServiceProviders\LoggerServiceProvider;
|
use Siteworxpro\App\Services\ServiceProviders\LoggerServiceProvider;
|
||||||
use Siteworxpro\App\Services\ServiceProviders\RedisServiceProvider;
|
use Siteworxpro\App\Services\ServiceProviders\RedisServiceProvider;
|
||||||
|
|
||||||
@@ -16,7 +17,8 @@ class Kernel
|
|||||||
{
|
{
|
||||||
private static array $serviceProviders = [
|
private static array $serviceProviders = [
|
||||||
LoggerServiceProvider::class,
|
LoggerServiceProvider::class,
|
||||||
RedisServiceProvider::class
|
RedisServiceProvider::class,
|
||||||
|
DispatcherServiceProvider::class,
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -70,7 +72,7 @@ class Kernel
|
|||||||
private static function bootModelCapsule(): void
|
private static function bootModelCapsule(): void
|
||||||
{
|
{
|
||||||
$capsule = new Manager();
|
$capsule = new Manager();
|
||||||
$capsule->setEventDispatcher(new Dispatcher());
|
$capsule->setEventDispatcher(Dispatcher::getFacadeRoot());
|
||||||
$capsule->addConnection(Config::get('db'));
|
$capsule->addConnection(Config::get('db'));
|
||||||
$capsule->setAsGlobal();
|
$capsule->setAsGlobal();
|
||||||
$capsule->bootEloquent();
|
$capsule->bootEloquent();
|
||||||
|
|||||||
35
src/Services/Facades/Dispatcher.php
Normal file
35
src/Services/Facades/Dispatcher.php
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Siteworxpro\App\Services\Facades;
|
||||||
|
|
||||||
|
use Siteworxpro\App\Events\Dispatcher as DispatcherConcrete;
|
||||||
|
use Siteworxpro\App\Services\Facade;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class Dispatcher
|
||||||
|
*
|
||||||
|
* A facade for the event dispatcher.
|
||||||
|
*
|
||||||
|
* @package Siteworxpro\App\Services\Facades
|
||||||
|
*
|
||||||
|
* @method static void listen(string $event, callable|string $listener)
|
||||||
|
* @method static void dispatch(object|string $event, array $payload = [], bool $halt = false)
|
||||||
|
* @method static void push(object|string $event, array $payload = [])
|
||||||
|
* @method static array|null until(object|string $event, array $payload = [])
|
||||||
|
* @method static bool hasListeners(string $eventName)
|
||||||
|
* @method static void subscribe(mixed $subscriber)
|
||||||
|
*/
|
||||||
|
class Dispatcher extends Facade
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get the registered name of the component.
|
||||||
|
*
|
||||||
|
* @return string The name of the component.
|
||||||
|
*/
|
||||||
|
protected static function getFacadeAccessor(): string
|
||||||
|
{
|
||||||
|
return DispatcherConcrete::class;
|
||||||
|
}
|
||||||
|
}
|
||||||
18
src/Services/ServiceProviders/DispatcherServiceProvider.php
Normal file
18
src/Services/ServiceProviders/DispatcherServiceProvider.php
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Siteworxpro\App\Services\ServiceProviders;
|
||||||
|
|
||||||
|
use Illuminate\Support\ServiceProvider;
|
||||||
|
use Siteworxpro\App\Events\Dispatcher;
|
||||||
|
|
||||||
|
class DispatcherServiceProvider extends ServiceProvider
|
||||||
|
{
|
||||||
|
public function register(): void
|
||||||
|
{
|
||||||
|
$this->app->singleton(Dispatcher::class, function () {
|
||||||
|
return new Dispatcher();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user