当我遇到如下声明时,我试图调试PHP脚本:
$cart = new form;
$$cart = $cart->function();
什么是$$cart
?
答案 0 :(得分:1)
声明$$cart
时PHP的作用是尝试获取$cart
对象的字符串值,并将其用作此变量变量的名称。这意味着它必须调用其类的__toString()
魔法。
如果类中没有__toString()
方法,这将导致可捕获的致命错误:
捕获致命错误:类MyClass的对象无法转换为字符串...
否则,$$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
答案 1 :(得分:0)
double $用于变量变量。
基本上这就是第二个$以及单词是一个变量,其值用于第一个$的名称
即.-
$first = "second";
$second = 'Goodbye';
echo $$first; // Goodbye