在 EventServiceProvider.php 来注册event 事件

    protected $listen = [
        Registered::class => [
            SendEmailVerificationNotification::class,  
            WelcomeEmail::class
            //添加 event 事件
        ],
    ];

在 需要用到的方法里面调用event事件

通过命令来生成类

 php artisan event:generate

逻辑

class WelcomeEmail
{
    protected $user ;

    public function __construct(User $user)
    {
        echo 'WelcomEmail';
        $this->user=$user;
    }


    public function handle(Registered $event)
    {
        // 发送邮件的逻辑
       $user =  $event->user; //获得用户
    //    >>>
       dd($user);
    }
}

使用 event 动作

    protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);
        Event::fire(new WelcomeEmail); 1 写法
        //event(new WelcomeEmail($user)); 2 写法  通过 helper 函数调用
    }

其它扩展 使用过程需要use

使用队列发送邮件加快相应速度

use Illuminate\Contracts\Queue\ShouldQueue;

implements ShouldQueue 

QUEUE_CONNECTION=beanstalkd

service beanstalkd status

apt-get install beanstalkd (没有可以安装)

ll /etc/default (线上服务器的配置)

composer require pda/pheanstalk (管理组件)

php artisan queue:work  手动执行
php artisan queue:listen 监听执行

个性化配置队列 (逻辑同上)

php artisan make:job SendWelcomeEmail

  // Event::fire(new WelcomeEmail);
    dispatch(new SendWelcomeEmail);

标签: none

添加新评论