1. 杨乐多博客首页
  2. 技术杂谈
  3. PHP

魔术方法之四:__toString方法

编码中,若想知道程序是否返回了正确的数据,除了断点调试工具外,我们可以直接在代码中输出打印信息。
比如打印一个对象,看看这个对象都有哪些属性值,我们常用的就是 print_r 和 var_dump。
如果用echo输出对象,程序则会报语法错误,也就是类型匹配失败的错误。错误信息:Catchable fatal error: Object of class AspYc could not be converted to string
如果想实现用echo直接输出对象,那么需要用到__toString方法了。
一个类中,如果定义了__toString方法,那么就能在打印数据时直接用echo打印对象体,此时对象就会自动调用所属类定义的__toString方法,格式化输出这个对象所包含的数据。

//运行代码
<?php
class AspYc{
    public $name = 'conan';
    private $sex = 'male';
    public function __toString()
    {
        return "这篇文章作者是{$this->name},性别是{$this->sex}。";
    }
}
$asp = new AspYc();
echo $asp;
echo PHP_EOL; //PHP中换行符
print_r($asp);
var_dump($asp);
//运行结果
这篇文章作者是conan,性别是male。
AspYc Object
(
    [name] => conan
    [sex:AspYc:private] => male
)
class AspYc#1 (2) {
 public $name =>
  string(5) "conan"
  private $sex =>
  string(4) "male"
}

类里面实现__toString方法后,echo对象时可以正常输出结果,且结果可以定制,因此更易于理解。
其实echo原本是可以打印对象,PHP也实现了这个接口,是由于PHP对其做了限制,所以只有当类实现了__toString方法后才允许直接用echo打印对象。

原创文章,作者:iConan,如若转载,请注明出处:https://www.aspyc.com/archives/626.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据