当我遇到如下声明时,我正在尝试调试 PHP 脚本:
$cart = new form;
$$cart = $cart->function();
是什么 $$cart
?
当我遇到如下声明时,我正在尝试调试 PHP 脚本:
$cart = new form;
$$cart = $cart->function();
是什么 $$cart
?
PHP 在声明时所做$$cart
的是尝试获取$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
双 $ 用于变量变量。
本质上,这意味着第二个 $ 以及单词是一个变量,其值用于第一个 $ 的名称
IE-
$first = "second";
$second = 'Goodbye';
echo $$first; // Goodbye