我正在使用PHP重載,而我想要做的是; 當我調用該對象時,它看起來像這樣。如何在PHP中的重載對象中獲取變量名稱?
$obj->person->name->function();
爲此,我使用__get和__call函數。他們會是這個樣子:
function __get($field){
return $this;
}
不過,我想知道的人,名字的變量名,因爲這可以改變 每當。我試圖這樣做:
function __get($field){
$array[] = $field;
return new object($array);
}
他們得到保存,但隨着我添加另一行,它只是將它添加到數組。在調用函數後,它不清除 。我試圖在__call清空數組,但是 沒有幫助。我想谷歌這個,但到目前爲止,我運氣不好。
在PHP中是否有一個本地函數?
- TOO MUCH TO READ?到此爲止,剩下的只是更多的解釋 -
然而__call發送陣列和向您發送到處理 功能是真正的另一個類。
原因: 我有一個用於MongoDB的類5個程序員,我們正在改變 從MongoDB的大量代碼庫到另一個數據庫。通過這個修復,我們可以一次更改整個代碼庫的數據庫 ,而不用花費太多的構建查詢的麻煩。我們只需 在函數類中執行查詢。 (當調用__call時訪問)。然而,一個典型的 線爲DB查詢看起來今天這個樣子:
$this->db->accounts->update(<array>);
這條線連接到一個數據庫,它連接到該帳戶數據庫中。 但是,我們有一些「特殊」變量,比如$ core。它看起來像這樣:
$this->db->core->accounts->update(<array>);
那一個不連接到同一個數據庫。
我們需要的是能夠在對象內部構建一系列對象,這是動態的。它需要找到名稱是什麼,所以我們可以把它們放在querys中。只適用於一條線,不是全部。它基本上是基於密鑰的數據庫上基於文檔的基礎設施,具有很多黑客攻擊。 :-D
非常感謝!
問題在於賬戶也是動態的。所以,它也可以是'$ this-> db-> google-> accounts-> update()''。我現在使用'__call'。 –
這個'accounts'是什麼意思?我相信這是表 – Broncha
是的,這是表。所以在函數中我們需要知道是什麼。如果它的「accounts」,我們需要一個表示它是「accounts」的變量,如果它的'google'我們需要一個表示它是'google'的變量。而且這個電話可以只要它想要。例如:'$ this-> db-> whatever-> every-> dowhatever-> when-> function-> says-> hello()'。基本上,我們需要傳遞'whatever','when','dowhatever','when','function','說''給hello()函數。唯一保持不變的變量是$ this-> db。 –