一、语法
public __toString ( ) : string
__toString() 方法用于一个类被当成字符串时应怎样回应。例如 echo $obj; 应该显示些什么。此方法必须返回一个字符串,否则将发出一条E_RECOVERABLE_ERROR 级别的致命错误。
注意:
需要指出的是在 PHP 5.2.0 之前,__toString() 方法只有在直接使用于 echo 或 print 时才能生效。PHP 5.2.0 之后,则可以在任何字符串环境生效(例如通过 printf(),使用 %s 修饰符),但不能用于非字符串环境(如使用 %d 修饰符)。自 PHP 5.2.0 起,如果将一个未定义 __toString() 方法的对象转换为字符串,会产生 E_RECOVERABLE_ERROR 级别的错误。如果使用 var_dump($obj) ,则会输出一个对象信息。
二、示例
<?php
/**
* 定义一个狗类
*/
class Cat {
//定义一个属性
private $name = null;
// 构造函数
function __construct(?string $name = null){
if(is_null($this->name)){
$this->setName($name);
}
}
/**
* 输出名字
*/
public function getName(){
echo "这是一只猫,名字叫{$this->name}。\n"."<br>";
}
/**
* 私有方法
*/
private function setName($name){
$this->name = $name;
}
public function __toString() {
return '这是一只猫,名字叫'.$this->name.'。<br>';
}
}
//实例化
$Cat = new Cat('旺财'); // 输出 __construct
echo $Cat; //输出:'这是一只猫,名字叫旺财。
三、其他
想了解更多,请看:https://www.php.net/manual/zh/language.oop5.magic.php#object.tostring
浙公网安备 33010602011771号