2013-07-01 100 views
0

我得到這個:PHP關閉類給出致命錯誤?

PHP Fatal error: Call to undefined method Closure::bind()

在那裏我得到的錯誤是該行:

public function bind($signal, $callback) 
{ 

    if (!array_key_exists($signal, $this->_registry)) 
     $this->_registry[$signal] = array(); 
    $this->_registry[$signal][] = \Closure::bind($callback, null, 'static'); // here 

    return $this; 
} 

正如你可以看到我使用Closure::bind(),因爲它是在manual表現。請注意,我使用\Closure::bind()(注意斜槓),因爲我使用名稱空間自動加載,並且需要通知自動加載器它應該查看系統名稱空間。

注意

仔細查看文檔中的每個類和關注每一個細節:)

+1

您使用的是哪個版本的PHP? – Martin

+1

服務器上的PHP版本是什麼? – Neal

+0

版本5.3.16是在本地主機 –

回答

5

檢查你的PHP版本,顯然你不是> = 5.4.0!

+0

ok爲什麼在__construct中它說min版本是> = 5.3.0:D –

+1

閉包存在於5.3中,但方法是在5.4中添加的:] –

+0

您有要小心這樣的新東西;他們喜歡在以後的更新中擴展他們的課程! –

-1

你需要檢查你的PHP版本。該文件指出,該版本應該ATLEAST 5.4.0

鏈接: - Closure

+0

我會爭辯..因爲錯誤是該方法不存在:) –

+0

錯誤,方法接受第一2作爲需要,第三作爲可選。 –

+0

哦......是的,我明白了。我的不好;) –

2

您需要確保您的PHP版本支持該方法。
您可以使用method_exists()命令檢查方法的存在。您正試圖執行的方法只適用於PHP 5.4.0或更高版本!

有關檢查方法存在的更多信息,請看這裏:http://php.net/manual/en/function.method-exists.php

+0

爲什麼downvoted ?? – pattyd

+0

它不是一個函數,它是一個方法:)並且檢查的正確方法是不存在函數,而是使用'new ReflectionClass(Object):: hasMethod($ methodName);' –

+0

哦,有趣的是,謝謝! – pattyd