如果 class 有 `__toString` 方法,我可以将 class 对象嵌入到字符串中吗?
Can I embed class objects into strings if class has `__toString` method?
如果我有一个看起来像这样的 class
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;
}
}
然后我想像这样使用我的 class
$myclass = new MyClass("myvar value");
echo "Embedded class into a string: $myclass";
从上面的代码我期望这个输出
Embedded class into a string: from toString: myvar value
是:
public function __toString() {
return "from toString: " . $this->myvar;
}
因为 $myvar
在 __toString
函数的范围内 未定义 。
这里有一个简单的 fiddle https://3v4l.org/YFctl
如果我有一个看起来像这样的 class
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;
}
}
然后我想像这样使用我的 class
$myclass = new MyClass("myvar value");
echo "Embedded class into a string: $myclass";
从上面的代码我期望这个输出
Embedded class into a string: from toString: myvar value
是:
public function __toString() {
return "from toString: " . $this->myvar;
}
因为 $myvar
在 __toString
函数的范围内 未定义 。
这里有一个简单的 fiddle https://3v4l.org/YFctl