Laravel - лучший способ привязать класс, только если пользователь вошел в систему

Мне нужно привязать одноэлементный класс только в том случае, если пользователь вошел в систему ... Я знаю, что лучшее место, где я должен привязать свой класс, - это поставщик услуг и метод 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() );
    });
});    

Этот код работает нормально, но я не уверен, что это хорошая идея. Что самое лучшее? Заранее спасибо!

определить лучший? действительно ли имеет значение один класс, к которому вы привязываетесь, и вы, вероятно, никогда больше не коснетесь привязки. на мой взгляд, мы склонны заботиться о слишком многих из тех, на разработку которых тратим достаточно времени. продвигайте свой продукт и выполняйте рефакторинг, если в будущем вы столкнетесь с этим 3 раза.

Sari Yono 20.03.2018 17:52
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
1
498
1

Ответы 1

Как насчет этого, например, у вашего поставщика услуг (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, потому что на этом этапе аутентификация пользователя еще не началась.

Антон Коваленко 21.03.2018 10:53

В этом случае я должен согласиться с более ранним комментарием Сари Ёно.

Sander van Hooft 22.03.2018 12:13

Другие вопросы по теме