Я изучаю Laravel 5 и немного запутался в этих строках кода (создание поставщика услуг):
public function register()
{
$this->app->singleton('Riak\Contracts\Connection', function($app)
{
return new Connection($app['config']['riak']);
});
}
Я не могу понять переменную $app
, и откуда она будет передана в функцию? Благодарю!
PS И, пожалуйста, исправьте, если я ошибаюсь, я прочитал несколько сообщений, и как я понимаю, закрытие - это анонимные функции, которые используют vars извне (используя use()
), а лямбда-функции - это просто закрытие того, что не использует эти vars. Или я что-то упускаю?
Это $this->app->singleton
который передает $app
к закрытию обратного вызова при его вызове.
Анонимная функция - это Callable
которая передается функции singleton
в объекте $app
.
Затем функция singleton
вызывает Callable
(анонимную) функцию Callable
(анонимную функцию) и передает $app
качестве аргумента в анонимную функцию.