PHP Closure Binding a closure for one call


Since PHP7, it is possible to bind a closure just for one call, thanks to the call method. For instance:


class MyClass
    private $property;

    public function __construct($propertyValue)
        $this->property = $propertyValue;

$myClosure = function() {
    echo $this->property;

$myInstance = new MyClass('Hello world!');

$myClosure->call($myInstance); // Shows "Hello world!"

As opposed to the bindTo method, there is no scope to worry about. The scope used for this call is the same as the one used when accessing or invoking a property of $myInstance.