Закрытие обратных вызовов в PHP (Laravel 5)

1

Я изучаю Laravel 5 и немного запутался в этих строках кода (создание поставщика услуг):

 public function register()
{
    $this->app->singleton('Riak\Contracts\Connection', function($app)
    {
        return new Connection($app['config']['riak']);
    });
}

Я не могу понять переменную $app, и откуда она будет передана в функцию? Благодарю!

PS И, пожалуйста, исправьте, если я ошибаюсь, я прочитал несколько сообщений, и как я понимаю, закрытие - это анонимные функции, которые используют vars извне (используя use()), а лямбда-функции - это просто закрытие того, что не использует эти vars. Или я что-то упускаю?

Теги:
laravel-5
closures

2 ответа

1
Лучший ответ

Это $this->app->singleton который передает $app к закрытию обратного вызова при его вызове.

1

Анонимная функция - это Callable которая передается функции singleton в объекте $app.

Затем функция singleton вызывает Callable (анонимную) функцию Callable (анонимную функцию) и передает $app качестве аргумента в анонимную функцию.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню