php面向對象之__toString()


 

來自星星:http://w3note.com/web/109.html

似曾相識,在php面向對象編程之魔術方法__set,曾經介紹了什么是魔術方法,這一章又介紹一個魔術方法__tostring()

 

__toString()是快速獲取對象的字符串信息的便捷方式,似乎魔術方法都有一個“自動“的特性,如自動獲取,自動打印等,__toString()也不例外,它是在直接輸出對象引用時自動調用的方法。

 

__toString()的作用

 

當我們調試程序時,需要知道是否得出正確的數據。比如打印一個對象時,看看這個對象都有哪些屬性,其值是什么,如果類定義了toString方法,就能在測試時,echo打印對象體,對象就會自動調用它所屬類定義的toString方法,格式化輸出這個對象所包含的數據。

下面我們來看一個__toString()的實例

<?php
02
class Person{
03
    private $name = "";
04
    function __construct($name = ""){
05
                  
06
        $this->name = $name;
07
    }
08
    function say(){
09
                  
10
        echo "Hello,".$this->name."!<br/>";  
11
    }
12
    function __tostring(){//在類中定義一個__toString方法
13
        return  "Hello,".$this->name."!<br/>";    
14
    }
15
}
16
$WBlog = new Person('WBlog');
17
echo $WBlog;//直接輸出對象引用則自動調用了對象中的__toString()方法
18
$WBlog->say();//試比較一下和上面的自動調用有什么不同
19
?>

  


程序輸出:

Hello,WBlog!

Hello,WBlog!

 

如果不定義“__tostring()”方法會怎么樣呢?例如在上面代碼的基礎上,把“ __tostring()”方法屏蔽掉,再看一下程序輸出結果:

 

Catchable fatal error: Object of class Person could not be converted to string

 

由此可知如果在類中沒有定義“__tostring()”方法,則直接輸出以象的引用時就會產生誤法錯誤,另外__tostring()方法體中需要有一個返回值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM