ArticleServiceProvider.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. namespace App\Module\Article\Providers;
  3. use App\Module\Article\Events\ArticleCreatedEvent;
  4. use App\Module\Article\Events\ArticleUpdatedEvent;
  5. use App\Module\Article\Events\ArticleViewedEvent;
  6. use App\Module\Article\Listeners\ArticleEventListener;
  7. use Illuminate\Support\ServiceProvider;
  8. /**
  9. * 文章模块服务提供者
  10. */
  11. class ArticleServiceProvider extends ServiceProvider
  12. {
  13. /**
  14. * 事件到监听器的映射
  15. *
  16. * @var array
  17. */
  18. protected $listen = [
  19. ArticleCreatedEvent::class => [
  20. ArticleEventListener::class . '@handleArticleCreated',
  21. ],
  22. ArticleUpdatedEvent::class => [
  23. ArticleEventListener::class . '@handleArticleUpdated',
  24. ],
  25. ArticleViewedEvent::class => [
  26. ArticleEventListener::class . '@handleArticleViewed',
  27. ],
  28. ];
  29. /**
  30. * 需要注册的订阅者
  31. *
  32. * @var array
  33. */
  34. protected $subscribe = [
  35. ArticleEventListener::class,
  36. ];
  37. /**
  38. * 注册服务
  39. *
  40. * @return void
  41. */
  42. public function register(): void
  43. {
  44. // 注册服务...
  45. }
  46. /**
  47. * 启动服务
  48. *
  49. * @return void
  50. */
  51. public function boot(): void
  52. {
  53. // 注册事件监听器
  54. $this->registerEvents();
  55. }
  56. /**
  57. * 注册事件和监听器
  58. *
  59. * @return void
  60. */
  61. protected function registerEvents(): void
  62. {
  63. $events = $this->app['events'];
  64. foreach ($this->listen as $event => $listeners) {
  65. foreach ($listeners as $listener) {
  66. $events->listen($event, $listener);
  67. }
  68. }
  69. foreach ($this->subscribe as $subscriber) {
  70. $events->subscribe($subscriber);
  71. }
  72. }
  73. }