似曾相識,在php物件導向程式設計之魔術方法__set,曾經介紹了什麼是魔術方法,這一章又介紹乙個魔術方法__tostring()。
__tostring()是快速獲取物件的字串資訊的便捷方式,似乎魔術方法都有乙個「自動「的特性,如自動獲取,自動列印等,__tostring()也不例外,它是在直接輸出物件引用時自動呼叫的方法。
__tostring()的作用
當我們除錯程式時,需要知道是否得出正確的資料。比如列印乙個物件時,看看這個物件都有哪些屬性,其值是什麼,如果類定義了tostring方法,就能在測試時,echo列印物件體,物件就會自動呼叫它所屬類定義的tostring方法,格式化輸出這個物件所包含的資料。
下面我們來看乙個__tostring()的例項
<?phpclass
person
function say()
function __tostring()
}$wblog = new person('
wblog');
echo $wblog;
//直接輸出物件引用則自動呼叫了物件中的__tostring()方法
$wblog->say();//
試比較一下和上面的自動呼叫有什麼不同
?>
程式輸出:
hello,wblog!
hello,wblog!
如果不定義「__tostring()」方法會怎麼樣呢?例如在上面**的基礎上,把「 __tostring()」方法遮蔽掉,再看一下程式輸出結果:
catchable fatal error: object of class person could not be converted to string
由此可知如果在類中沒有定義「__tostring()」方法,則直接輸出以象的引用時就會產生誤法錯誤,另外__tostring()方法體中需要有乙個返回值。
php物件導向之轉殖物件
在前面的php物件導向之物件和引用,我們試圖以 b a 的方式複製物件以傳遞物件的值 內容 結果卻是傳遞物件的位址,在結尾為了解決複製物件這個問題,提到了轉殖的方法。接下來講一下php物件導向之轉殖物件。前面我們已經知道,使用傳址引用的方式呼叫物件,實質呼叫的是同乙個物件,有時需要建設立乙個物件的副...
php物件導向之封裝
物件導向三大特徵 封裝 繼承 多型 class human lisi new human echo lisi money,1000 變一下money lisi money 500 echo lisi money,500李四的錢,別人問他有多少錢,他就如實說.別人把他的錢減少,立即減少了.如果在現實生...
PHP物件導向之介面
php與大多數物件導向程式設計語言一樣,不支援多重繼承。也就是說每個類 只能繼承乙個父類。為了解決此問題,php引入了介面。介面的思想是指定了乙個實現該介面的類必須實現的一系列方法。介面是一種特殊的抽象類,抽象類是一種特殊的類,所以介面也是一種特殊的類。為什麼說介面是一種特殊的抽象類呢?如果乙個抽象...