【问题标题】:Can I embed class objects into strings if class has `__toString` method?如果类有 `__toString` 方法,我可以将类对象嵌入到字符串中吗?
【发布时间】:2017-04-25 19:55:57
【问题描述】:

如果我有一个看起来像这样的课程

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

【问题讨论】:

  • 是的,只需修正__toString() 方法中的错字即可:return "from toString: $myvar"; --> return "from toString: $this->myvar";
  • 我的错。在原始代码中,连接是带点的。当我创建问题时,我不小心写错了。
  • 你测试过你的代码吗?它应该可以工作
  • 我有。它没有
  • 它不工作怎么办?黑屏?意外输出?

标签: php class tostring


【解决方案1】:

它是:

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

因为$myvar__toString函数范围内是未定义

这里有一个简单的小提琴https://3v4l.org/YFctl

【讨论】:

    猜你喜欢
    • 2013-06-27
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-18
    • 2017-02-24
    • 1970-01-01
    相关资源
    最近更新 更多