本文目錄一覽:
php魔術方法。。
在 PHP 里,將所有以 __(兩個下劃線)開頭的類方法保留為魔術方法,所以在定義類方法時,除了上述魔術方法,建議不要以 __ 為前綴。
魔術方法的引入是對面向對象編程思想的進一步實現,重載就是通過魔術方法來實現的。
PHP 魔術方法主要有:
__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(),__sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() 和 __debugInfo() 等。
最常見的是__construct(), __destruct(),__get(), __set()等:
__construct和__destruct是類的構造函數和析構函數。
php什麼是魔術方法
__construct(),
__destruct(),
__call(),
__callStatic(),
__get(),
__set(),
__isset(),
__unset(),
__sleep(),
__wakeup(),
__toString(),
__invoke(),
__set_state(),
__clone()
和
__debugInfo()
等方法在
PHP
中被稱為”魔術方法”(Magic
methods)。在命名自己的類方法時不能使用這些方法名,除非是想使用其魔術功能。
php魔術方法__tostring
__tostring()方法:在直接輸出對象引用的時候,就不會產生錯誤,而是自動調用了__tostring()方法,輸出__tostring()方法中返回的字符串
通俗來說就是 對象一般是使用print_r() 或 var_dump() 來打印訪問
但對於一般閑的人來說直接 使用 echo 輸出對象時,必定會報錯的,原因是對象無法使用echo的。
這個時候如果想解決這個錯誤,咱們應該怎麼操作呢?
可以很好的利用__tostring()這個魔術方法
但是切記使用__toString() 時返回值一定要使用return 來進行返回。
?php
header(“content-type:text/html;charset=utf-8”);
class demo{
public $foo;
public function __construct($foo){
$this-foo=$foo;
}
//定義一個__toString()方法時,返加一個成員屬性$foo
public function __toString(){
return $this-foo;
}
}
$demo=new demo(‘hello PHP成員’);
echo $demo;
php中常用的魔術方法有哪些?
php規定以兩個下劃線__開頭的方法都保留為魔術方法,建議自定義函數的函數名最好避開。
__construct() 實例化類時自動調用。
__destruct() 類對象使用結束時自動調用。
__set() 在給未定義的屬性賦值的時候調用。
__get() 調用未定義的屬性時候調用。
__isset() 使用isset()或empty()函數時候會調用。
__unset() 使用unset()時候會調用。
__sleep() 使用serialize序列化時候調用。
__wakeup() 使用unserialize反序列化的時候調用。
__call() 調用一個不存在的方法的時候調用。
__callStatic()調用一個不存在的靜態方法是調用。
__toString() 把對象轉換成字符串的時候會調用。比如 echo。
__invoke() 當嘗試把對象當方法調用時調用。
__set_state() 當使用var_export()函數時候調用。接受一個數組參數。
__clone() 當使用clone複製一個對象時候調用。
原創文章,作者:LGSE,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/144457.html