Может кто-нибудь объяснить, что этот код делает в Laravel - PullRequest
0 голосов
/ 28 апреля 2019

Я думаю, что у меня есть приблизительное представление о том, что делает охранник. по какой-то причине в Интернете не так много написано об этом. Я видел эту строку кода в чьем-то промежуточном программном обеспечении

public function __construct(Guard $auth)
{
    $this->auth = $auth;
}

и я не понимаю, что он делает. Я понимаю, что есть два типа встроенных охранников-веб и API и веб-по умолчанию. Что делает «Страж» внутри конструкции? и как переменная $ auth вступает в игру?.

вот изображение полного кода enter image description here

1 Ответ

1 голос
/ 28 апреля 2019

Класс Guard используется для аутентификации, т.е. входа пользователя в систему, проверки наличия аутентифицированного пользователя, получения аутентифицированного пользователя, выхода из него и т. Д.

Я бы сказал, наиболееРаспространенный способ доступа к этой информации (без документации и различных учебных пособий) - использование вспомогательной функции Auth Facade или auth () .При любом подходе у вас будет доступ к тем же методам, например,

auth()->user() или Auth::user() вернет текущего аутентифицированного пользователя.
auth()->id() или Auth::id() вернет текущего аутентифицированного пользователя id.
auth()->check() или Auth::check() сообщит вам, вошел ли текущий пользователь в систему или нет.
и т. Д.

В любом случае (используя auth()-> или Auth::) вымы собираемся получить доступ к методам класса Guard.


В Laravel также есть нечто, называемое Service Container , что дает вам возможность иметь внедрение зависимости .По сути, это место, где вы можете автоматически получить экземпляр класса без необходимости делать что-то вроде new ClassName().Поначалу это может показаться не таким уж большим делом, но если у вас есть класс, которому нужно передать другую переменную и классы его конструктору, вы можете установить это в контейнере, чтобы вам не пришлось об этом беспокоиться.Другое преимущество может заключаться в том, что вы хотите использовать один и тот же экземпляр класса, а не создавать новый каждый раз, что также можно сделать с контейнером.


Теперь некоторые люди предпочитаютиспользовать внедрение зависимостей вместо использования Facades или вспомогательных функций (см. здесь для получения дополнительной информации).В этом примере вы вводите класс Guard, чтобы вы могли обращаться к нему как к свойству класса, а не использовать функцию Facade или вспомогательную функцию.Это не более того.

...