原文:
質問: 内容は同じですが、前にある 2 つの特殊なアンダースコアは、同じクラス内の 2 つのメソッドを意味するのでしょうか。
function __toString(){ return $this->content; }//输出字符串 function toString(){ return $this->content;}
答え:
違いは、前者は文字列値が必要なオブジェクト型変換を実行するために自動的に呼び出されるという点です。コード内で明確にする必要があります。
class MyClass{ public function __toString() { return 'call __toString()'; } public function toString() { return 'call toString()'; }}$my = new MyClass();echo $my . '<br />'; //自动调用(隐式)__toString转成stringecho $my->toString() . '<br />'; //调用(显式)toString去转成stringecho $my->__toString() . '<br />'; //如果这样调用, 代码会不好看echo (string)$my . '<br />';
__toString() は、文字列に変換する必要があるときに暗黙的かつ自動的に呼び出されます。これも Java からのものです。 コードが重複しないように __toString() を呼び出してください。
より転載: Single Party Education の BLOG.PHP - toString() 。 http://blog.sina.com.cn/s/blog_569767bf01000c37.html