Closure::call() is an another new and cool feature added to PHP 7. It allows to bind a closure to a specific object on run time with the addition of closure->call() function.
It is very fast in performance than PHP 5.6 bindTo.
Let’s understand with the help of example –
Before PHP 7 –
<?php
class A {
private $x = 1;
}
// Define a closure code used in before of PHP 7
$getValue = function() {
return $this->x;
};
// Bind a clousure
$value = $getValue->bindTo(new A, 'A');
print($value());
?>
Output:
1
In PHP 7 –
<?php
class A {
private $x = 1;
}
// PHP 7+ code
$value = function() {
return $this->x;
};
print($value->call(new A));
?>
Output:
1