laravel事件创建以及使用

蔚落 2022-08-17 14:15 329阅读 0赞

首先我们可以使用最快的方式创建一个我们的事件,找到App\Providers\EventServiceProvider;

在这个数组

  1. protected $listen = [
  2. 'App\Events\SomeEvent' => [
  3. 'App\Listeners\EventListener',
  4. ],
  5. 'App\Events\PupUserchange'=>[
  6. 'App\Handlers\Events\UserManagerd'
  7. ],
  8. ];

里面添加自己定义的事件,事件放在App\Events文件夹下面,处理事件的类可以随意定义文件夹,

或者使用laravel自带的App\Listeners文件夹,配置好了之后使用laravel命令

  1. php artisan event:generate

命令回车之后事件就自动生成了。

5.0版本的还可以使用2条命令进行生成事件,还可以分开执行创建事件。

  1. php artisan make:event PupUserchange(事件的类名)
  2. php artisan handler:event UserManagerd(事件处理类) --event=PupUserchange

事件就已经生成了。

事件类PupUserchange .php:

  1. <?php
  2. namespace App\Events;
  3. use App\Events\Event;
  4. use Illuminate\Queue\SerializesModels;
  5. use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
  6. use App\models\Users;
  7. class PupUserchange extends Event
  8. {
  9. use SerializesModels;
  10. public $user;
  11. /**
  12. * Create a new event instance.
  13. *
  14. * @return void
  15. */
  16. public function __construct(Users $users)
  17. {
  18. //
  19. $this->user = $users;
  20. }
  21. /**
  22. * Get the channels the event should be broadcast on.
  23. *
  24. * @return array
  25. */
  26. public function broadcastOn()
  27. {
  28. return [];
  29. }
  30. }

事件操作-> 事件处理类:

  1. <?php
  2. namespace App\Handlers\Events;
  3. use App\Events\PupUserchange;
  4. use Illuminate\Queue\InteractsWithQueue;
  5. use Illuminate\Contracts\Queue\ShouldQueue;
  6. use App\models\Users;
  7. class UserManagerd
  8. {
  9. /**
  10. * Create the event handler.
  11. *
  12. * @return void
  13. */
  14. public function __construct()
  15. {
  16. //
  17. }
  18. /**
  19. * Handle the event.
  20. *
  21. * @param PupUserchange $event
  22. * @return void
  23. */
  24. public function handle(PupUserchange $event)
  25. {
  26. echo "<pre>";
  27. print_r($event->user->toArray());
  28. }
  29. }

控制器调用事件:

Event::fire(new PupUserchange(Users::find(2)));

//事件handle处理结果打印了结果集

  1. Array
  2. (
  3. [id] => 2
  4. [name] => gxx
  5. [email] => admin@admin.com
  6. [password] => 123456
  7. [remember_token] => 121545
  8. [created_at] => -0001-11-30 00:00:00
  9. [updated_at] => -0001-11-30 00:00:00
  10. )

事件从创建到 处理已经完成了。

发表评论

表情:
评论列表 (有 0 条评论,329人围观)

还没有评论,来说两句吧...

相关阅读