PHP toString()不起作用

时间:2016-06-26 13:15:56

标签: php oop tostring

我正在学习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);

?>

这是截图 Chrome:http://prntscr.com/bl941w

提前感谢!

2 个答案:

答案 0 :(得分:3)

您刚刚创建了一个新对象__toString,但永远不会调用$bad->__toString()方法。只有在您直接调用echo $bad;或隐式广告时才会调用该方法,即$str = (string) $bad$bad = new Baddie(3, "bob"); echo $bad;

在你的情况下,你想要使用

{{1}}

答案 1 :(得分:2)

您需要致电toString()

echo $bad->__toString()

或者只是

echo $bad

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