首先介紹__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.選擇排序 選擇排序是在一組未排序的序列中...