__toString()方法
来源:互联网 发布:淘宝代购点怎么做 编辑:程序博客网 时间:2024/06/16 07:17
__toString()方法
打印一个对象时,如果定义了__toString()
方法,就能在测试时,通过echo
打印对象体,对象就会自动调用它所属类定义的toString方法,格式化输出这个对象所包含的数据。如果没有这个方法,那么echo
一个对象时,就会报错Object of class Account could not be converted to string
,实际上这是一个类型匹配失败的错误。不过仍然可以用print_r()
和var_dump()
函数输出一个对象。当然__toString()
是可以定制的,所提供的信息和样式更加丰富。
例如:
<?phpclass Account{ public $user = 1; private $pwd = 2; //自定义的格式化输出方法 public function __toString() { return "当前对象的用户名是$this->user,密码是$this->user"; }}$a = new Account();echo $a;
运行结果为:
当前对象的用户名是1,密码是1
如果使用var_dump($a)
的运行结果为:
object(Account)#1 (2) { ["user"]=> int(1) ["pwd":"Account":private]=> int(2) }
运行这段代码发现,使用toString方法后,输出结果是可定制的,更易于理解。实际上,toString方法也是一种序列化,PHP自带的serialize
和unserialize
也是进行序列化的,但是这组函数序列化时会产生一些无用信息,如属性字符串长度,造成存储空间的额浪费。因此,可以实现自己的序列化和反序列化方法,或者json_encode
/json_decode
也是一个不错的选择。
机制解析:
为什么直接echo
一个对象就会报语法错误,而如果这个对象实现了__toString()
方法后就可以直接输出呢?
原因很简单,echo
本来可以打印一个对象,而且实现了这个接口,但是PHP对其做了限制,只有实现toString
后才允许使用。从下面的PHP源代码可以得到验证。
3 0
- __toString()方法
- __tostring方法
- __toString()方法
- __toString()方法
- __toString()方法
- __toString()方法
- __toString方法
- 【php】“__toString()”方法使用
- PHP中__tostring方法浅谈
- 魔术方法(__tostring(),__set_state())
- PHP魔术方法之__toString()方法
- php 魔术方法 __sleep() __wakeup() __toString() __debuginfo()
- php---魔术方法(__tostring(),__set_state())
- PHP面向对象:魔术方法__toString()
- php 魔术方法__toString()的作用实例
- Lua中元方法__tostring的使用
- php中__toString()方法及__call()方法的使用介绍
- php 5 __toString()方法 类转换为字符串
- OPC 目标平台只能是 X86吗?--尝试读取或写入受保护的内存
- 网络图片查看器HttpURLConnection+Bitmap
- windows安装mq
- 解决fragment中嵌套viewpager,vierpager中有多个fragment,不显示的问题
- C#socket建立服务器并进行简单通信
- __toString()方法
- C#初学者json解析
- 数据结构实验之二叉树六:哈夫曼编码
- Android 内存优化 (防Memory Leak)
- android开发步步为营之110:android反编译apk
- 《TCP/IP详解 卷1:协议》 读书笔记 第11章 UDP:用户数据报协议
- 数据结构——18 二叉树(非递归)
- Java函数的基础介绍
- 排序算法