I would like to be able to call a closure that I assign to an object's property directly without reassigning the closure to a variable and then calling it. Is this possible?
The code below doesn't work and causes Fatal error: Call to undefined method stdClass::callback()
.
$obj = new stdClass();
$obj->callback = function() {
print "HelloWorld!";
};
$obj->callback();
As of PHP7, you can do
or use Closure::call(), though that doesn't work on a
StdClass
.Before PHP7, you'd have to implement the magic
__call
method to intercept the call and invoke the callback (which is not possible forStdClass
of course, because you cannot add the__call
method)Note that you cannot do
in the
__call
body, because this would trigger__call
in an infinite loop.