FileServiceProvider.php 2.3 KB

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