_toString方法是在打印对象时自动调用的魔术方法,如果不声明会报以下错
Catchable fatal error: Object of class String could not be converted to
<?php class String { public $value;//字符串的值 public function __construct($str) { $this->value = $str; } public function __call($method, $args) { array_push($args,$this->value); $this->value = call_user_func_array($method,$args); return $this; } //打印对象时返回对象的value值 public function __toString() { return strval($this->value); } } $str = new String(‘20150816‘); echo $str->trim()->strtotime()->date(‘Y年m月d日‘);
PHP的__toString魔术方法的设计原型来源于Java,Java中也有这么一个方法,而且在Java中,这个方法被大量使用,对于调试程序比较方便. 实际上,__toString方法也是一种序列化, PHP自带的serialize/unserialize也是进行序列化的, 但是这组函数序列化时会产生一些无用信息,如属性字符串长度,造成存储空间无谓浪费.因此,可以实现自己的序列化和反序列化方法,或者json_encode/json_decode也是一个不错的选择
原文:http://www.cnblogs.com/chenqionghe/p/4735720.html