7.7.6 魔术方法__toString()
类中通用的方法__toString( )
魔术方法“__toString()”是快速获取对象的字符串表示的最快捷方式。即当我们直接要输出一个对象时,如echo $a,print $a,那么会自动调用的此魔术方法。
注意:__toString()方法必须返回一个字串类型的值。
<?php
//声明一个测试类,在类中声明一个成员属性和一个__toString()方法
class TestClass {
private $foo; //在类中声明的一个成员方法
public function __construct($foo) { //通过构造方法传值为成员属性赋初值
$this->foo = $foo; //为成员属性赋值
}
public function __toString() { //在类中定义一个__toString方法
return $this->foo; //返回一个成员属性$foo的值
}
}
$obj = new TestClass('Hello'); //创建一个对象并赋值给对象引用$obj
echo $obj; //直接输出对象引用则自动调用了对象中__toString()方法输出Hello
test.php
<?php
/*
* 魔术方法, 只有PHP语言中存在
*
*
* __construct()
*
* __destruct()
*
* __set()
*
* __get()
*
* __isset()
*
* __unset()
*
* 1. 自动调用, 但不同的魔术方法,有自己的调时机
* 2. 都是以"__"开始的方法
* 3. 所有的魔术方法,方法名都是固定的
* 4. 如果不写, 就不存在, 也就没有默认的功能
*
*
*
* __toString()
*
* 1. 是在直接使用 echo print printf输出一个对象引用时,自动调用这个方法
* 2. 将对象的基本信息放在__toString()方法内部, 形成自字符串返回。
* 3. __toString()方法中, 不能有参数, 而且必须返回一个字符串
*/
class Person {
public $name;
public $age;
public $sex;
function __construct($name, $age, $sex) {
$this->name = $name;
$this->age = $age;
$this->sex = $sex;
}
function say() {
}
function __toString() {
return "aaaaaaaaaaaaaaaaaaa<br>";
}
}
$p = new Person("张三", 10, "男");
echo $p;
print new Person("aaa", 10, "bb");