UlogicServiceProvider.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. namespace App\Module\Ulogic\Providers;
  3. use App\Module\Ulogic\Events\MessageSentEvent;
  4. use App\Module\Ulogic\Events\UserPunishedEvent;
  5. use App\Module\Ulogic\Events\UserTimeUpdatedEvent;
  6. use App\Module\Ulogic\Listeners\UlogicEventListener;
  7. use Illuminate\Support\ServiceProvider;
  8. /**
  9. * 用户逻辑模块服务提供者
  10. */
  11. class UlogicServiceProvider extends ServiceProvider
  12. {
  13. /**
  14. * 事件到监听器的映射
  15. *
  16. * @var array
  17. */
  18. protected $listen = [
  19. UserPunishedEvent::class => [
  20. UlogicEventListener::class . '@handleUserPunished',
  21. ],
  22. MessageSentEvent::class => [
  23. UlogicEventListener::class . '@handleMessageSent',
  24. ],
  25. UserTimeUpdatedEvent::class => [
  26. UlogicEventListener::class . '@handleUserTimeUpdated',
  27. ],
  28. ];
  29. /**
  30. * 需要注册的订阅者
  31. *
  32. * @var array
  33. */
  34. protected $subscribe = [
  35. UlogicEventListener::class,
  36. ];
  37. /**
  38. * 注册服务
  39. *
  40. * @return void
  41. */
  42. public function register(): void
  43. {
  44. // 注册服务...
  45. $this->app->singleton('ulogic.app.message.service', function ($app) {
  46. return new \App\Module\Ulogic\Services\AppMessageService();
  47. });
  48. $this->app->singleton('ulogic.user.address.service', function ($app) {
  49. return new \App\Module\Ulogic\Services\UserAddressService();
  50. });
  51. $this->app->singleton('ulogic.user.relation.service', function ($app) {
  52. return new \App\Module\Ulogic\Services\UserRelationService();
  53. });
  54. $this->app->singleton('ulogic.wallet.address.service', function ($app) {
  55. return new \App\Module\Ulogic\Services\WalletAddressService();
  56. });
  57. }
  58. /**
  59. * 启动服务
  60. *
  61. * @return void
  62. */
  63. public function boot(): void
  64. {
  65. // 注册事件监听器
  66. $this->registerEvents();
  67. }
  68. /**
  69. * 注册事件和监听器
  70. *
  71. * @return void
  72. */
  73. protected function registerEvents(): void
  74. {
  75. $events = $this->app['events'];
  76. foreach ($this->listen as $event => $listeners) {
  77. foreach ($listeners as $listener) {
  78. $events->listen($event, $listener);
  79. }
  80. }
  81. foreach ($this->subscribe as $subscriber) {
  82. $events->subscribe($subscriber);
  83. }
  84. }
  85. }