2010-10-23 67 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 
它的名称值
相关问题