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
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…