我正在学习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
方法并使用其结果作为输出。