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