我只需要在用户登录时绑定单例类...我知道我应该绑定我的类的最佳位置是服务提供者和方法寄存器(),但是在这个阶段用户身份验证还没有开始。
我通过像这样的事件绑定来解决这个问题:
Event::listen('Illuminate\Auth\Events\Authenticated', function ($authenticated) {
app()->singleton( MyClass::class, function ($app) use($authenticated) {
// $authenticated->user or Request::user()
return new MyClass( Request::user() );
});
});
此代码工作正常,但我不确定这是个好主意。哪个最好? 提前谢谢!
答案 0 :(得分:0)
例如,您的服务提供商(AppServiceProvider)中的这个怎么样?
/**
* Register any application services.
*
* @return void
*/
public function register()
{
if (Auth::check()) {
app()->singleton(MyClass::class, function ($app) {
return new MyClass(Auth::user());
});
}
}