我正在查看codebird-php git並注意到作者有一種方法可以檢測未在類中聲明的方法。例如,他有PHP中的變量方法
$ cb-> statuses_homeTimeline();
成功執行,儘管在Codebird類中沒有稱爲statuses_homeTimeline()
的方法。
我試過尋找這種類型的建築的信息,但不知道它叫什麼,我沒有找到任何東西。 (我已經搜索了「變量方法」,「映射方法」等所有變體)?是否有反對使用它的論據?它(原則上)如何工作?
我正在查看codebird-php git並注意到作者有一種方法可以檢測未在類中聲明的方法。例如,他有PHP中的變量方法
$ cb-> statuses_homeTimeline();
成功執行,儘管在Codebird類中沒有稱爲statuses_homeTimeline()
的方法。
我試過尋找這種類型的建築的信息,但不知道它叫什麼,我沒有找到任何東西。 (我已經搜索了「變量方法」,「映射方法」等所有變體)?是否有反對使用它的論據?它(原則上)如何工作?
我發現了一堆涉及__call
的問題和你可以用它做的事情,但沒有什麼關於什麼__call
實際上是。
PHP對象有許多魔術方法。最着名的是__construct
。
__call
是一種神奇的方法,只要你嘗試調用一個不存在的方法就會被調用。對於方法來說,這是一種「全方位」的方式。
技術術語是「方法重載」。
所以當$cb->statuses_homeTimeline()
被調用時,如果該方法不存在,它會改爲調用
$cb->__call("statuses_homeTimeline",array())
__call()
魔法。當在對象上下文中調用不可訪問的方法時觸發__call()
。
您正在尋找的「魔術方法」'__call'。 – Jon