Мне нужно привязать одноэлементный класс только в том случае, если пользователь вошел в систему ... Я знаю, что лучшее место, где я должен привязать свой класс, - это поставщик услуг и метод register (), но на этом этапе аутентификация пользователя еще не началась.
Я решаю эту проблему путем привязки к событию следующим образом:
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() );
});
});
Этот код работает нормально, но я не уверен, что это хорошая идея. Что самое лучшее? Заранее спасибо!






Как насчет этого, например, у вашего поставщика услуг (AppServiceProvider)?
/**
* Register any application services.
*
* @return void
*/
public function register()
{
if (Auth::check()) {
app()->singleton(MyClass::class, function ($app) {
return new MyClass(Auth::user());
});
}
}
Я уже писал в вопросе, Auth :: check () всегда будет == false, потому что на этом этапе аутентификация пользователя еще не началась.
В этом случае я должен согласиться с более ранним комментарием Сари Ёно.
определить лучший? действительно ли имеет значение один класс, к которому вы привязываетесь, и вы, вероятно, никогда больше не коснетесь привязки. на мой взгляд, мы склонны заботиться о слишком многих из тех, на разработку которых тратим достаточно времени. продвигайте свой продукт и выполняйте рефакторинг, если в будущем вы столкнетесь с этим 3 раза.