「__toString()」是php中的一個魔術方法,在把物件轉換成字串時自動調用,用於一個類別被當成字串時應如何回應;該方法必須傳回一個字串,否則將發出一條「E_RECOVERABLE_ERROR」等級的致命錯誤。
本教學操作環境:windows7系統、PHP7.1版,DELL G3電腦
__toString(),類別當成字串時的回應方法
__toString()是php中的一個魔術方法,在把物件轉換成字串時自動呼叫。
在物件導向程式設計中,PHP 提供了一系列的魔術方法,這些魔術方法為程式設計提供了許多便利,在 PHP 中的作用是非常重要的。 PHP 中的魔術方法通常以__(兩個底線)開始,不需要明確的呼叫而是在某種特定條件下自動呼叫的。
作用:
__toString() 方法用於一個類別被當成字串時應怎樣回應。例如 `echo $obj;` 應該要顯示些什麼。
注意:
此方法必須傳回字串,否則將發出一條 `E_RECOVERABLE_ERROR` 層級的致命錯誤。
警告:
不能在 __toString() 方法中拋出例外。這麼做會導致致命錯誤。
程式碼:
<?php class Person { public $sex; public $name; public $age; public function __construct($name="", $age=25, $sex='男') { $this->name = $name; $this->age = $age; $this->sex = $sex; } public function __toString() { return 'go go go'; } } $person = new Person('小明'); // 初始赋值 echo $person;
結果:
go go go
那麼如果類別中沒有 __toString() 這個魔術方法運行會發生什麼事呢?讓我們來測試下:
程式碼:
<?php class Person { public $sex; public $name; public $age; public function __construct($name="", $age=25, $sex='男') { $this->name = $name; $this->age = $age; $this->sex = $sex; } } $person = new Person('小明'); // 初始赋值 echo $person;
結果:
Catchable fatal error: Object of class Person could not be converted to string in D:\phpStudy\WWW\test\index.php on line 18 很明显,页面报了一个致命错误,这是语法所不允许的。
擴充資料:PHP 中的魔術方法如下表所示:
魔術方法 | 作用 |
---|---|
#__construct() | 實例化類別時會自動調用 |
__destruct() | 類別物件使用結束時自動呼叫 |
__set() | 在給未定義的屬性賦值時自動呼叫 |
__get() | #在呼叫未定義的屬性時自動呼叫 |
__isset() | 使用isset() 或empty() 函數時自動呼叫 |
__unset() | 使用unset() 時自動呼叫 |
__sleep() | 使用serialize 序列化時自動呼叫 |
__wakeup() | 使用unserialize反序列化時自動呼叫 |
__call() | 呼叫不存在的方法時自動呼叫 |
呼叫一個不存在的靜態方法時自動呼叫 | |
#把物件轉換成字串時自動呼叫 | |
當嘗試把物件當方法呼叫時自動呼叫 | |
當使用var_export() 函數時自動調用,接受一個數組參數 | |
#當使用clone 複製一個物件時自動調用 | |
使用var_dump() 列印物件資訊時自動呼叫 |
以上是php __toString()方法有什麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!