Another cool new future in PHP 7 allows to bind a closure to a specific object on run-time with the addition of Closure->call()
function.
This method takes the object as it’s first argument, followed by any arguments to pass into the closure.
Syntax
1 |
mixed Closure::call(object $to[, mixed ...$parameters]) |
Example with PHP7:
1 2 3 4 5 6 7 8 |
class HelloWorld { private $greeting = "Hello"; } $closure = function($whom) { echo $this->greeting . ' ' . $whom; } $obj = new HelloWorld(); $closure->call($obj, 'World'); // Hello World |
Before PHP7 we use to do something similar to below example with bindTo()
method and which allow creating new closures that have $this bound to a specific method. However, it has not been possible to bind at call time and you must instead create a temporary new closure.
1 2 3 4 5 6 7 |
class HelloWorld { private $greeting = "Hello"; } $closure = function($whom) { echo $this->greeting . ' ' . $whom; }; $closure = $closure->bindTo(new HelloWorld , 'HelloWorld'); // intermediate closure $closure(' World'); // Hello World |
I hope you like this Post, Please feel free to comment below, your suggestion and problems if you face - we are here to solve your problems.
I am Arjun from Hyderabad (India). I have been working as a software engineer from the last 7+ years, and it is my passion to learn new things and implement them as a practice. Aside from work, I like gardening and spending time with pets.