牛骨文教育服务平台(让学习变的简单)
博文笔记

PHP魔术方法 _toString()

创建时间:2017-11-26 投稿人: 滕彤 浏览次数:285

__toString() 方法用于一个类被当成字符串时应怎样回应。例如 echo $obj; 应该显示些什么。

此方法必须返回一个字符串,否则将发出一条 E_RECOVERABLE_ERROR 级别的致命错误。

例:

class Person{ public $name; protected $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; }}$p = new Person("小明", 20);//使用echo 输出对象echo $p;

此时会报出一个致命错误

PHP魔术方法 _toString()

错误的大意是 Person类不能转换为string;其实这个时候会默认调用__toString()方法;

添加__tostring()方法到类中

class Person{ public $name; protected $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } public function __toString() { echo "__toString 被调用"; }}$p = new Person("小明", 20);echo $p;

再次执行程序:

PHP魔术方法 _toString()

可以发现在报错之前先调用了__toString 这个魔术方法,也就意味着,当我们输出一个对象的时候,可以在__toString中近性处理,最后一个返回一个字符串;

class Person{ public $name; protected $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } public function __toString() { return "我是". $this->name." ". $this->age."岁"; }}$p = new Person("小明", 20);echo $p;

输出结果:

PHP魔术方法 _toString()

这里需要注意的是__toString()中一定要return ,不然还会报错。

想和我一起学习的朋友可以关注我的微信公众号:会编程的少年,微信号:iphpcode

也可以到我的博客留言 http://iphpcode.cn

bye!

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。