Что такое закрытие в Laravel?

Здравствуйте, я работаю как laravel Beginner, и я увидел одну функцию в middlewere, и функция ниже:

public function handle($request, Closure $next, $guard = null)
{
    if (Auth::guard($guard)->check())
    {
       return redirect('/home');
    } 

    return $next($request);
}

Что такое Закрытие и что оно делает?

1 ответ

Решение

Закрытие является анонимной функцией. Замыкания часто используются как методы обратного вызова и могут использоваться в качестве параметра в функции.

Если вы берете следующий пример:

function handle(Closure $closure) {
    $closure();
}

handle(function(){
    echo 'Hello!';
});

Начнем с добавления Closure параметр handle функция. Это напечатает намек на то, что handle функция занимает Closure,

Затем мы называем handle функция и передать функцию в качестве первого параметра.

Используя $closure(); в handle функция мы говорим PHP, чтобы выполнить данный Closure который будет тогда echo 'Hello!'

Также возможно передать параметры в Closure, Мы можем сделать это, изменив Closure позвонить в handle функция для передачи параметра. В этом примере я просто передам строку, но это может быть любая переменная.

Функция handle теперь выглядит как

function handle(Closure $closure) {
    $closure('Hello World!');
}

Теперь нам также нужно изменить Closure Сам взять параметр. Мы делаем это, просто добавляя параметр в функцию. И затем мы передаем эту переменную echo,

Функция теперь выглядит как

handle(function($value){
    echo $value;
});

Который будет эхом Hello World!

Для получения дополнительной информации вы можете проверить эти ссылки:

http://php.net/manual/en/functions.anonymous.php

http://php.net/manual/en/class.closure.php

Другие вопросы по тегам