Closure::call()
Binding an object scope with a closure is an efficient way to use a closure with different objects. At the same time, it is also a simple way to use different closures having different behaviors an object in different places. This is because it binds the object scope with a closure at runtime without inheritance, composition, and so on.
However, previously we didn't have the Closure::call()
method; we had something like this:
<?php // Pre PHP 7 code class Point{ private $x = 1; private $y = 2; } $getXFn = function() {return $this->x;}; $getX = $getXFn->bindTo(new Point, 'Point');//intermediate closure echo $getX(); // will output 1
But now with Closure::call()
, the same code can be written as follows:
<?php
// PHP 7+ code
class Point{
private $x = 1;
private $y = 2;
}
// PHP 7+ code
$getX = function() {return $this->x;};
echo $getX->call(new Point); // outputs 1 as doing same thing
Both code snippets perform the same action. However, PHP7...