0
我試圖在線程完成運行後使用閉包作爲回調。但是我遇到了似乎是PHP或pthread擴展的限制/失敗。在線程中存儲閉包失敗
我的開發堆棧運行在Win7 x64上,使用PHP 5.5.3 x86 TS,pthread 0.44版本。
下面的代碼工作:
class Test
{
public $callbackVar;
}
$test = new Test();
$callbackVar = function()
{
echo "Callback var invoked.";
};
$test->callbackVar = $callbackVar;
$test->callbackVar->__invoke();
但只要我得到來自線程測試,運行腳本提供了一個錯誤:
class Test extends Thread
{
public $callbackVar;
public function run() { }
}
$test = new Test();
$callbackVar = function()
{
echo "Callback var invoked.";
};
$test->callbackVar = $callbackVar;
// assert() returns true
assert($test->callbackVar === null);
$test->callbackVar->__invoke();
利用隨後的輸出
Fatal error: Call to a member function __invoke() on a non-object
任何人有過這個問題嗎?任何可能的解決方法?如果可能,我寧願不使用eval ...我已經嘗試了許多解決方法,例如使用ReflectionFunction重新包裝到另一個閉包中,...沒有任何東西會削減它。
你使用的是什麼PHP版本? – MisterBla
已更新的問題,忘記了那個... –
我發了[3v4l](http://3v4l.org/RnEgH)的代碼。在5.3和5.5.2之間沒有錯誤。不知道發生了什麼。 – MisterBla