Storing closures in thread fails
I'm trying to use a closure as a callback once a thread is done running.
However I'm running into what seems to be a limit/failure of PHP or the
pthread extension.
My dev stack is running on Win7 x64 with PHP 5.5.3 x86 TS, pthread version
0.44.
The following code works :
class Test
{
public $callbackVar;
}
$test = new Test();
$callbackVar = function()
{
echo "Callback var invoked.";
};
$test->callbackVar = $callbackVar;
$test->callbackVar->__invoke();
But as soon as I derive Test from Thread, running the script gives an error :
class Test extends Thread
{
public $callbackVar;
public function run() { }
}
$test = new Test();
$callbackVar = function()
{
echo "Callback var invoked.";
};
$test->callbackVar = $callbackVar;
$test->callbackVar->__invoke();
With the following output
Fatal error: Call to a member function __invoke() on a non-object
Anyone ever had this issue ? Any possible workaround ? I'd rather not use
eval if possible... I've tried many workarounds, such as rewrapping into
another closure, using a ReflectionFunction, ... nothing cuts it.
No comments:
Post a Comment