laravel事件

事件,我们可以简单理解为执行一个方法后,还需要关联执行的方法。打个比方,当我们注册一个账号后,需要告诉他这个账号所在地区的人。那么,这个时间我们就可以用事件来操作。当然,你也完全不用事件这个东东,全都写在一个函数里面。只是说用事件为了代码显得更合理,之后优化也更方便。下面,我就以购买东西后发送一份邮件为例来说明一下。

php artisan make:event BuyShop #注册事件(事件名 BuyShop )
php artisan make:listener BuyShopSendEmail --event=BuyShop #注册事件的监听器,注意后面的名字需要和事件名一致

1、控制器的代码(应该都能看懂,我就不多说)


    namespace Modules\Test\app\Http\Controllers;
    use App\Http\Controllers\Controller;
    use App\Events\BuyShop; //引入刚注册的事件名字

    class BuyController extends Controller{
        public function __construct(){

        }

        public function submitBuy(){
            //购买商品的一些逻辑
            $res = [
              'id'      =>          5,
              'name'    =>          'xiaobing',
              'age'     =>          15,
              'sex'     =>          'boy'
            ];
            event(new BuyShop($res));
        }
    }
?>

2、在事件的方法中,我们这样写代码(其实,这儿啥也没干,就只是在构造函数里面赋了一个值)

// App\Events\BuyShop.php;
public $users;
public function __construct($users)
{
    //
    $this->users = $users;
}

3、在监听的文件中,我们这样写

//App\Listeners\BuyShopSendEmail.php
public function handle(BuyShop $event): void
{
    //这里就是我需要执行的操作了
    //比如,执行的事件中,我需要做些什么,都在宛和了
    //$event 就是我刚在控制器中丢过来的内容
    var_dump($event);
}

4、最后,别忘了在 EventServiceProvider.php 的文件中去注册事件

// App\Providers\EventServiceProvider.php
//这个文件本身就有的
protected $listen = [
    Registered::class => [
        SendEmailVerificationNotification::class,
    ],
    'App\Events\SendEmail' => [
        "App\Listeners\ListenSendEmail1"
    ],
    // App\Events\BuyShop 就是需要注册的事件
    'App\Events\BuyShop'    =>  [
        'App\Listeners\BuyShopSendEmail'
    ]
];

laravel事件_第1张图片

你可能感兴趣的:(php,Laravel,laravel,android,php)