Что происходит «под капотом» при вызове Laravel: Auth::user()->id? Пытаюсь разобраться с ларавел. Настроен крайне позитивно. Стоически подавляю желание написать весь проект на богопротивном codeigniter за два дня. Мозги пухнут от фасадов, сервис-провайдеров и прочей х…..прогрессивной штуки. Есть ощущение, что мне это не дано, но попробовать хочется. Итак, Laravel: Auth::user()->id . Все советуют : пишите так и обрящете id пользователя. Но хотелось бы понять откуда что берется. На первый взгляд вызывается статический метод user() класса Auth, который возвращает некий объект у которого есть свойство id. На второй взгляд Auth это фасад. Хорошо, не витрина. Ок , пытаемся понять откуда все-таки берется метод user() и свойство id. Открываем vendor\laravel\framework\src\Illuminate\Support\Facades\Auth.php protected static function getFacadeAccessor() { return 'auth'; } идем в vendor\laravel\framework\src\Illuminate\Auth находим в нем сервис провайдер (опять страшные словечки!) vendor\laravel\framework\src\Illuminate\Auth\AuthServiceProvider.php в нем метод register() видим такого зверя - $this->registerAuthenticator(); protected function registerAuthenticator() { $this->app->singleton('auth', function ($app) { $app['auth.loaded'] = true; return new AuthManager($app); }); значит AuthManager это класс, который нам нужен. Это также , гласит таблица соответствий фасадов Laravel и классов, лежащих в их основе. Illuminate\Auth\AuthManager - auth Но, как оказалось, класс AuthManager не предоставляет метод user() .. , ничего подобного. Никакого метода user() там нет. Так откуда берется пресловутый user() . Что за объект он нам возвращает ? Сколько еще ползать по коду , чтобы понять что к чему? ХХХ….р.р..б.б! Спасибо за камменты.
Попробую разъяснить вам, как работает Auth::user()->id в Laravel.
Когда вы вызываете Auth::user(), Laravel внутри использует фасад Auth, который в свою очередь обращается к сервис-провайдеру для получения экземпляра AuthManager. AuthManager будет ответственным за управление аутентификацией и авторизацией в вашем приложении.
Сам по себе класс AuthManager не имеет метода user(). Но когда вы вызываете Auth::user(), Laravel использует "магию" метода __call у фасада, чтобы вызвать метод user() на экземпляре AuthManager.
Метод user() возвращает текущего аутентифицированного пользователя. Затем, когда вы обращаетесь к свойству id, Laravel обращается к свойству id этого пользователя и возвращает его идентификатор.
Таким образом, через цепочку вызовов Laravel позволяет вам удобно получать информацию о текущем пользователе вашего приложения.
Надеюсь, это поможет вам разобраться с тем, что происходит "под капотом" при вызове Auth::user()->id в Laravel. И не расстраивайтесь, разбираться с фреймворком может быть сложно в начале, но со временем все должно стать более понятным. Удачи!
Попробую разъяснить вам, как работает Auth::user()->id в Laravel.
Когда вы вызываете Auth::user(), Laravel внутри использует фасад Auth, который в свою очередь обращается к сервис-провайдеру для получения экземпляра AuthManager. AuthManager будет ответственным за управление аутентификацией и авторизацией в вашем приложении.
Сам по себе класс AuthManager не имеет метода user(). Но когда вы вызываете Auth::user(), Laravel использует "магию" метода __call у фасада, чтобы вызвать метод user() на экземпляре AuthManager.
Метод user() возвращает текущего аутентифицированного пользователя. Затем, когда вы обращаетесь к свойству id, Laravel обращается к свойству id этого пользователя и возвращает его идентификатор.
Таким образом, через цепочку вызовов Laravel позволяет вам удобно получать информацию о текущем пользователе вашего приложения.
Надеюсь, это поможет вам разобраться с тем, что происходит "под капотом" при вызове Auth::user()->id в Laravel. И не расстраивайтесь, разбираться с фреймворком может быть сложно в начале, но со временем все должно стать более понятным. Удачи!