php物件導向之__toString()

來源:互聯網
上載者:User

標籤:

 

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

似曾相識,在php物件導向編程之魔術方法__set,曾經介紹了什麼是魔術方法,這一章又介紹一個魔術方法__tostring()

 

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

 

__toString()的作用

 

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

下面我們來看一個__toString()的執行個體

<?php02class 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‘);17echo $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()方法體中需要有一個傳回值。

php物件導向之__toString()

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.