PHP,封閉類
回答
它指的是calling magic。
據我所知,對於任何包含方法__invoke
的類,它的實例可以被調用,就像它是一個函數一樣。 Closure::__invoke
的行爲就像那樣。
即當$foo
是Closure
類(匿名函數),稱$foo($bar)
將調用$foo->__invoke(bar)
(雖然__invoke
成員並不意味着直接調用,這只是爲了顯示它是如何工作)。
當你定義匿名函數,你這樣做:現在
$greet = function($name)
{
printf("Hello %s\r\n", $name);
};
,$greet
是Closure
類的。 $greet->__invoke
等於function($name){ printf("Hello %s\r\n", $name); }
並且記住,Closure::__invoke
是。
謝謝Alvin Wong爲你解釋有關__invoke魔法的解釋我現在也知道另一種魔法,我可以在OOP中使用魔法,所以謝謝你,祝你有美好的一天。 – 2012-07-21 13:08:53
我覺得bind
和bindTo
之間的區別僅僅是在他們的調用方式:
$cl->bindTo($obj)
相當於
Closure::bind($cl, $obj)
關於__invoke
meethod,它說,該方法存在,但它並未實際使用。當您將閉包作爲函數使用時,會使用繞過該方法的內部(可能更高效)的機制。但該方法與其他可調用類兼容,如果需要,可以手動調用它。
謝謝巴爾馬可以請你多展開一下關於bind和bindTo因爲我不知道如果我能夠比較bindTo並且綁定到一個代碼,我是否有這個權利。 – 2012-07-21 13:06:51
as [this](http://www.php.net/manual/en/closure.bind.php)指出'此方法是Closure :: bindTo()的靜態版本'' – 2012-07-21 13:40:51
查看示例文檔。我不認爲我能做得比這更好。它們只是編寫完全相同的兩種不同的方式 - bindTo是面向對象的,而bind是傳統的函數風格。 – Barmar 2012-07-23 06:55:57
- 1. 不是封閉類
- 2. 封閉類的C#類型
- 3. 封閉類vs申報類
- 4. PHP fputcsv和封閉領域
- 5. Android - 不是封閉類
- 6. 錯誤:不是封閉類
- 7. 未封閉字符類
- 8. 封閉實例無效時的封閉類型行爲
- 9. PHP封閉中的變量爲空
- 10. 插入與PHP/MySQL的封閉表
- 11. 修改封閉
- 12. 封閉性
- 13. 在封閉
- 14. 封閉在Javascript
- 15. 從封閉
- 16. 與封閉
- 17. 封閉範圍
- 18. 受約束的封閉類型家族
- 19. 將封閉類添加到Eclipse模板
- 20. 原因封閉括號類型的投
- 21. 隱式引用Java中的封閉類
- 22. 如何進入封閉泛型類
- 23. 「Scala是不是一個封閉類」
- 24. 如何在PHP中關閉封閉外的數組?
- 25. 錯誤在封閉
- 26. 計劃 - 在封閉
- 27. AS3封閉混亂
- 28. 封閉缺失者
- 29. 如何在封閉
- 30. CFG和封閉性
謝謝大家,我正在閱讀答案。 – 2012-07-21 12:58:12