2010-10-23 74 views
1

我試圖調試一個PHP腳本,當我遇到一個類似的聲明傳來:

$cart = new form; 
$$cart = $cart->function(); 

什麼是$$cart

回答

1

什麼PHP在聲明$$cart時會做什麼,試圖獲取$cart對象的字符串值,並將其用作此變量變量的名稱。這意味着它必須調用__toString()這個類的魔法。

如果在類中沒有__toString()方法,這將導致可捕獲的致命錯誤:

Catchable fatal error: Object of class MyClass could not be converted to string...

否則,$$cart變量變量的名稱是由魔法返回的對象的字符串值方法。

__toString()魔術方法實現的(不同類別/名稱,但類似的例子調用代碼)的一個例子:

class MyClass { 
    public function __toString() { 
     return 'foo'; 
    } 
    public function some_method() { 
     return 'bar'; 
    } 
} 

$obj = new MyClass(); 
$$obj = $obj->some_method(); 

echo (string) $obj, "\n"; // foo 
echo $$obj; // bar 
0

雙$用於可變的變量。

本質是什麼,這需要與字沿第二$是一個變量用於第一$

i.e.-

$first = "second"; 

$second = 'Goodbye'; 

echo $$first; // Goodbye 
它的名稱值
相關問題