php魔术方法之__toString

一、语法

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

posted on 2021-04-09 11:45  narwhalYel  阅读(330)  评论(0)    收藏  举报