Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Версия Laravel: 5.2
Версия PHP: 5.6
в сервис-провайдере \Illuminate\Auth\AuthServiceProvider
не пойму как работает следующий код:
Код:
protected function registerAuthenticator()
{
$this->app->singleton('auth', function ($app) {
$app['auth.loaded'] = true;
return new AuthManager($app);
});
$this->app->singleton('auth.driver', function ($app) {
return $app['auth']->guard();
});
}
А именно: почему после первого return
return new AuthManager($app);
продолжает выполняться код:
$this->app->singleton('auth.driver', function ($app) {
return $app['auth']->guard();
});
я не такой уж и новичек в php, но сейчас я в ступоре. Буду благодарен даже легкому намеку.
Изменено Yurri_87 (16.07.2017 18:27:37)
Не в сети
return находится в замыкании (closure). В методе registerAuthenticator() просто регистрируются два синглтона. Прочитай доки про контейнер (IoC Container), примеры там тоже есть.
Не в сети
Про ioc контейнер и регистрации понятно.
Буду читать про замыкание, спасибо. Думал метод должен обрываться. Оказалось плохо ООП знаю.
Не в сети
Дополню для общей эрудиции:
http://php.net/manual/ru/function.return.php
http://php.net/manual/ru/functions.returning-values.php
return возвращает управление программой модулю, из которого была вызвана функция. Выполнение программы продолжается с инструкции, следующей за местом вызова.
Не в сети
return возвращает управление программой модулю, из которого была вызвана функция. Выполнение программы продолжается с инструкции, следующей за местом вызова
Ну да, а там их целых две: сначала после return выходим из безымянной функции, выполнение продолжается в метод/функцию (ведь нет разницы с точки зрения областей видимости?) синглтон. Тоесть там "двойная стенка, защищающая от обрыва" метод registerAuthenticator().
Программирование такая штука что надо стабильно кодить, чтобы через месяц-другой не спотыкаться о вещи, которые раньше не доставляли проблем. А значит нужно зарабатывать $, а не просто увлекаться.
Изменено Yurri_87 (17.07.2017 13:02:09)
Не в сети
Страницы 1