php物件導向 toString 用法詳解

2021-08-04 22:39:53 字數 1724 閱讀 1178

本文章來給各位同學介紹一下關於php物件導向__tostring() 用法詳解,, __tostring() 方法是自動被呼叫的,是在直接輸出物件引用時自動呼叫的

我們前面說過在類裡面宣告「--」開始的方法名的方法(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 ****** class

class testclass

//定義乙個__tostring方法,返加乙個成員屬性$foo

public function __tostring()

}$class = new testclass('hello');

//直接輸出物件

echo $class;

?>

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

__tostring()是快速獲取物件的字串資訊的便捷方式,似乎魔術方法都有乙個「自動「的特性,如自動獲取,自動列印等,__tostring()也不例外,它是在直接輸出物件引用時自動呼叫的方法。

__tostring()的作用

當我們除錯程式時,需要知道是否得出正確的資料。比如列印乙個物件時,看看這個物件都有哪些屬性,其值是什麼,如果類定義了tostring方法,就能在測試時,echo列印物件體,物件就會自動呼叫它所屬類定義的tostring方法,格式化輸出這個物件所包含的資料。

下面我們來看乙個__tostring()的例項

**如下

複製**

<?php 

02 class person 

08     function say() 

12     function __tostring() 

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()方法體中需要有乙個返回值。

PHP物件導向 tostring 和

將乙個物件當做乙個字串來使用時,會自動呼叫該方法,並且在該方法中,可以返回一定的字串,以表明該物件轉換為字串之後的結果。該魔術方法比較常用。注意 如果沒有定義該方法,則物件無法當做字串來使用!ini set display errors 1 classa obj1 new a 張三 15,男 ech...

php物件導向之 toString

似曾相識,在php物件導向程式設計之魔術方法 set,曾經介紹了什麼是魔術方法,這一章又介紹乙個魔術方法 tostring tostring 是快速獲取物件的字串資訊的便捷方式,似乎魔術方法都有乙個 自動 的特性,如自動獲取,自動列印等,tostring 也不例外,它是在直接輸出物件引用時自動呼叫的...

PHP物件導向

1 什麼是物件導向 起初,物件導向 是專指在程式設計中採用封裝 繼承 抽象等設計方法。可是,這個定義顯然不能再適合現在情況。物件導向的思想已經涉及到軟體開發的各個方面。如 物件導向的分析 ooa,object oriented analysis 物件導向的設計 ood,object oriented...