關於php中的一些常見的魔術方法

2021-07-25 05:09:33 字數 1834 閱讀 3589

首先介紹__construct與__destruct:

這兩個魔術方法是在類建立和類銷毀的時候自動呼叫的,說白了就是類的構造方法與析構方法,__construct就是構造方法,所以引數可有可無,如果你想下物件構建的時候對物件初始化,可以寫在__construct的引數中,在方法體內給物件賦值。因為方法的性質,這兩個方法都不需要返回值。

接著我們看看__tostring與__debuginfo:

顧名思義__tostring是在物件被當成字串處理時會呼叫,比如物件被直接echo的時候。因為是轉換成字串的操作,因此__tostring需要返回乙個字串。__debuginfo會在物件被var_dump時被呼叫。返回值是乙個陣列,var_dump展示的就是這個陣列

__invoke這是乙個很無聊的函式,當物件被當成函式使用的時候會被觸發,比如:

class b

}$b = new b();

$b('123','sdfds');

值得注意的是函式的引數要與呼叫的時候個數一致,返回值就是呼叫物件的返回值。

__clone,是由物件被轉殖的時候由新物件呼叫。唯二值得注意的是是新的物件呼叫和物件被轉殖的時候,要經過clone函式

__sleep與__wakeup是一對相反的函式,前者是物件被序列化的時候呼叫,後者是字串被反串行話成物件的事後呼叫:

class person

//析構方法

public function __destruct()

//物件被轉換成字元轉是執行的方法

public function __tostring()

//物件被序列換是執行的方法

public function __sleep()

//物件被反序列化時呼叫的方法

public function __wakeup()

//物件被var_dump()是呼叫的方法

public function __debuginfo()

public function __clone()

//當物件被當做函式來呼叫的時候

public function __invoke()

}$xiaoming = new person('xiaoming',20);//建立物件

echo $xiaoming;//物件被當做字串處理

var_dump($xiaoming);//觸發__debuginfo

$xiaoli = unserialize(serialize($xiaoming));//序列化與反序列化

$xiao = clone $xiaoming;//轉殖

當然魔術方法還有很多,這裡只介紹了一部分。

php路徑和魔術常量的一些總結

1.函式 2.超全域性變數 3.魔術常量 要描述乙個檔案的位置,可以使用決對路徑和相對路徑。絕對路徑是從根開始一級一級地進入各個子目錄,最後指定該檔名或目錄名。而相對目錄是從當前目錄進入某目錄,最後指定該檔名或目錄名。在系統的每個目錄下都有兩個特殊的目錄 和 分別指示當前目錄和當前目錄的父目錄 上一...

一些內建的魔術方法

call 物件 呼叫這個類中的 call 方法 class a def call self,args,kwargs print obj a print callable obj obj a obj a obj len len 物件 需要實現這個,類中加 len 方法class cls def ini...

php常見的一些基礎演算法

1.冒泡演算法 冒泡演算法是將乙個未排序的序列,從前往後對相鄰的兩個值依次進行對比和調整,大的值下沉,小的值上冒。arr array 12,45,23,25,14,9,5,46,56,98,57 function bsort arr return arr 2.選擇排序 選擇排序是在一組未排序的序列中...