我們前面說過在類里面聲明“__”開始的方法名的方法(PHP給我們提供的),都是在某一時刻不同情況下自動調用執行的方 法,“__toString()”方法也是一樣自動被調用的,是在直接輸出對象引用時自動調用的, 前面我們講過對象引用是一個指針,比如 說:“$p=new Person()“中,$p就是一個引用,我們不能使用echo 直接輸出$p,這樣會輸 出“Catchable fatal error: Object of class Person could not be converted to string”這樣的錯誤,如果你在類里面定義了“__toString()”方法,在直接輸出對象引用的時候,就不會產生錯誤,而是自動調用 了”__toString()”方法, 輸出“__toString()”方法中返回的字符,所以“__toString()”方法一定要有個返回值(return 語句)。
<?php // Declare a simple class class TestClass { public $foo; public function __construct($foo) { $this->foo = $foo; } // 定義一個__toString方法,返加一個成員屬性$foo public function __toString() { return $this->foo; } } $class = new TestClass('Hello'); // 直接輸出對象 echo $class; ?>
上例輸出:Hello