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
__callmethod to intercept the call and invoke the callback (which is not possible forStdClassof course, because you cannot add the__callmethod)Note that you cannot do
in the
__callbody, because this would trigger__callin an infinite loop.