Issue
I saw one Laravel function in middlewere:
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check())
{
return redirect('/home');
}
return $next($request);
}
What is Closure
and what does it do?
Solution
A Closure is an anonymous function. Closures are often used as callback methods and can be used as a parameter in a function.
If you take the following example:
function handle(Closure $closure) {
$closure();
}
handle(function(){
echo 'Hello!';
});
We start by adding a Closure
parameter the handle
function. This will type hint us that the handle
function takes a Closure
.
We then call the handle
function and pass a function as the first parameter.
By using $closure();
in the handle
function we tell PHP to execute the given Closure
which will then echo 'Hello!'
It is also possible to pass parameters into a Closure
. We can do so by changing the Closure
call in the handle
function to pass on a parameter. In this example i'll just pass a string but this can be any variable.
The handle function now looks like
function handle(Closure $closure) {
$closure('Hello World!');
}
We now also need to modify the Closure
itself to take the parameter. We do so by simply adding a parameter to the function. And then we pass that variable to the echo
.
The function now looks like
handle(function($value){
echo $value;
});
Which will echo Hello World!
For more information you can check out these links:
http://php.net/manual/en/functions.anonymous.php
http://php.net/manual/en/class.closure.php
Answered By - Amando Vledder Answer Checked By - Robin (PHPFixing Admin)
0 Comments:
Post a Comment
Note: Only a member of this blog may post a comment.