使用echo方法直接输出对象时会调用其__toString()方法
注意:该方法必须返回字符串,否则会抛出"E_RECOVERABLE_ERROR"级别的异常。在__toString()方法中也不能抛出异常。
示例代码如下:
<?php class Person { public $sex; public $name; public $age; public function __construct($name="", $age=25, $sex='Male') { $this->name = $name; $this->age = $age; $this->sex = $sex; } public function __toString() { return 'go go go'; } } $person = new Person('John'); // 赋初始值 echo $person;
输出结果如下:
go go go
如果类中没有定义__toString()会怎样?我们来试试看。
<?php class Person { public $sex; public $name; public $age; public function __construct($name="", $age=25, $sex='Male') { $this->name = $name; $this->age = $age; $this->sex = $sex; } } $person = new Person('John'); // 赋初始值 echo $person;
输出结果如下:
Catchable fatal error: Object of class Person could not be converted to string in D:\phpStudy\WWW\test\index.php on line 18
可见,它会在页面上报告致命错误,说明这种用法不允许。
登录后可发表评论