Skip to content

Instantly share code, notes, and snippets.

@kirilkirkov
Created July 8, 2020 14:22
Show Gist options
  • Save kirilkirkov/ef7a40558737aeb6409aac89ab24b0ce to your computer and use it in GitHub Desktop.
Save kirilkirkov/ef7a40558737aeb6409aac89ab24b0ce to your computer and use it in GitHub Desktop.
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment