PHP 7 – Closure

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.


mixed Closure::call(object $to[, mixed ...$parameters])

Example with PHP7:

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.

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. Protection Status