PHP toString() not working


PHP toString() not working

我正在学习toString的udemy课程,但是在我的浏览器上,当我使用toString函数时,它没有显示任何内容。

<?php 
class Baddie{
    //property
    public $evilness = 10;
    public $name = "";
    //constructor
    public function __construct($evilness, $name){
        //echo "A ". __CLASS__ . " has been created!";
        $this->evilness = $evilness;
        $this->name = $name;
    }
    public function __toString(){
        return (string)$this->name;
    }
}
$bad = new Baddie(3, "bob");
//var_dump($bad);
?>

这是一个截图铬:http://prntscr.com/bl941w

提前感谢!

您刚刚创建了一个新对象Baddie,但是从未调用__toString方法。该方法只有在直接调用$bad->__toString()或通过强制转换(即echo $bad;$str = (string) $bad)隐式调用时才会被调用。

在您的例子中,您可能希望使用

$bad = new Baddie(3, "bob");
echo $bad;

您需要调用toString()

echo $bad->__toString()

还是

echo $bad

如果用对象调用echo,它将搜索__toString方法并使用其结果作为输出。