Laravel 5.1在侦听器中访问事件对象

Laravel 5.1在侦听器中访问事件对象,laravel,events,queue,listeners,Laravel,Events,Queue,Listeners,我正在试用Laravel5.1的队列,在其侦听器中使用$event对象时遇到问题 AuthController.php public function postGenerateResetToken() { try { $admin = Admin::where( 'email', '=', Input::get( 'email' ) )->firstOrFail(); $token = Bus::dispatch( new Generate

我正在试用Laravel5.1的队列,在其侦听器中使用$event对象时遇到问题

AuthController.php

public function postGenerateResetToken()
{
    try
    {
        $admin = Admin::where( 'email', '=', Input::get( 'email' ) )->firstOrFail();

        $token = Bus::dispatch( new GeneratePasswordResetToken( $admin ) );

        event( new PasswordResetTokenWasGenerated( $admin, $token ) );

        return success();
    }
    catch( ModelNotFoundException $exception )
    {
        return fail();
    }
}
PasswordResetTokenWasGenerated.php

class PasswordResetTokenWasGenerated extends Event
{

    use SerializesModels;

    public function __construct( $admin, $token )
    {
        $this->admin = $admin;
        $this->token = $token;
    }

    public function broadcastOn()
    {
        return [];
    }
}  
SendForgottenPasswordEmail.php

class SendForgottenPasswordEmail implements ShouldQueue
{

    public function __construct()
    {
        //
    }

    public function handle(PasswordResetTokenWasGenerated $event)
    {
        $data = [
            'admin' => $event->admin,
            'token' => $event->token
        ];

        Mail::send( 'emails.forgotten-password', $data, function( $message ) use ( $event )
        {
            $message->subject( 'Forgotten password' );

            $message->to( $event->admin->email );
        });
    }
}
在处理程序中使用
$event->admin
会导致
未定义的属性:PasswordResetTokenWasGenerated::$admin

但是,只有在侦听器上实现
ShouldQueue
接口时,才会发生此错误。没有界面,它就可以正常工作

队列驱动程序设置为
sync


我知道这是因为排队,但它不是应该按照我希望的方式工作吗

在设置管理员和令牌之前,应将其声明为公共的:

类PasswordResetTokenWasGenerated扩展事件 {

}


之后,您应该能够访问侦听器中的这些属性。

您可以粘贴事件类的真实代码吗?你提供的是一些伪代码。太棒了!这实际上解决了这个问题。我不会发现这一点,因为“public”是默认的访问修饰符。。。但是,当然,反射是如何工作的。。。非常感谢。
use SerializesModels;

public $admin;
public $token;

public function __construct( $admin, $token )
{
    $this->admin = $admin;
    $this->token = $token;
}

public function broadcastOn()
{
    return [];
}