Могу ли я встраивать объекты класса в строки, если в классе есть метод `__toString`?

Если у меня есть класс, который выглядит примерно так

class MyClass {
private $myvar;

public function __construct($myvar) {
$this->myvar = $myvar;
}

public function getMyVar() {
return $this->myvar;
}

public function __toString() {
return "from toString: " . $this->myvar;
}
}

И тогда я хочу использовать свой класс, как это

$myclass = new MyClass("myvar value");
echo "Embedded class into a string: $myclass";

Из приведенного выше кода я бы ожидал этот вывод

Embedded class into a string: from toString: myvar value

1

Решение

Это:

public function __toString() {
return "from toString: " . $this->myvar;
}

Так как $myvar в объеме __toString функция не определен.

Простая скрипка здесь https://3v4l.org/YFctl

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]