laravel事件,它们是同步执行的吗?

时间:2017-02-07 14:49:22

标签: php laravel laravel-5 laravel-5.3

基本上我想要做的是使用special token auto login

但是:仅适用于页面的子集。比如,使用令牌登录进行评论是可以的。令牌登录无法更改信用卡信息和购买物品。

所以我想在token_login表上存储一个布尔users

在每次登录时,我使用事件处理程序

token_login设置为false
class EventServiceProvider extends ServiceProvider
{

    protected $listen = [
      'Illuminate\Auth\Events\Login' => [PostLoginListener::class],
    ];

执行真正的令牌登录时,我将其设置为true。

所以我希望事件被调用 - > token_login = false

然后代码继续运行,在实际自动登录时设置token_login = true。

现在这需要事件实际上始终同步并且始终在其他代码之前触发。是这样的吗?

2 个答案:

答案 0 :(得分:7)

只要您的PostLoginListener未实现Illuminate\Contracts\Queue\ShouldQueue界面,您的活动就会同步处理。

答案 1 :(得分:1)

由于PHP是一种同步语言(如果您不使用HHVM或Hack),事件总是以相同的顺序触发。因此,您可以测试此事件是否在另一个事件之前触发,然后再远离它。

编辑: Laravel激发事件的方式很大程度上取决于ServiceProvider数组存储在config/app.php内的顺序。