<?php
/** * created by phpstorm.
* user: mins
* date: 2017/3/24
* time: 10:20
*/class magicfunction
/*** 析構函式通常在物件被銷毀時呼叫,析構函式不接收任何引數。
* 經常在析構函式中執行一些清理工作,比如關閉資料庫連線等
*/public function __destruct()
/*** 魔術方法__get()在我們嘗試訪問乙個不存在的屬性時會被呼叫。
* 它接收乙個引數,該引數表示訪問屬性的名字,並且將該屬性的值返回。
*@param $name
*@return string
*/public function __get($name)
/*** __set()魔術方法在我們嘗試修改乙個不可訪問的屬性時會被呼叫,
* 它接收兩個引數,乙個表示屬性的名字,乙個表示屬性的值。
*@param $name
*@param $value
*@return string
*/function __set($name, $value)
/*** __isset()魔術方法在對乙個不可訪問的屬性呼叫isset()方法時會被呼叫,
* 它接收乙個引數,表示屬性的名字。它應該返回乙個布林值,用來表示該屬性是否存在
*@param $name
*@return string
*/public function __isset($name)
/*** __unset()魔術方法在呼叫unset()函式銷毀乙個不能訪問的屬性時會被呼叫,
* 它接收乙個引數,表述屬性的名字。
*@param $name
*@return string
*/public function __unset($name)
/*** __tostring()在我們將物件當作字串一樣使用時會被呼叫,
* 它不接收任何引數。該方法允許我們定義物件的表現形式。**如下:
*@return string
*/public function __tostring()
/*** 靜態魔術方法__set_state(),在我們使用var_export()函式輸出物件時會呼叫該方法。
*@param $an_array
*@return string
*/static function __set_state($an_array)
/*** 轉殖物件
* 預設的,物件都是按引用傳值的。因此,在將乙個物件賦值給另乙個變數時,只是建立了指向該物件的乙個引用,並沒有複製該物件。
* 為了實現真正得複製乙個物件,我們需要使用clone關鍵字。這種「按引用傳遞」的策略同樣適用於包含在物件內部的物件。
* 即使我們轉殖了乙個物件,在物件內部的任何物件都不會被轉殖,因此最終的結果是兩個物件共享了同乙個內部物件。
*//** * 對乙個物件使用clone關鍵字時,該魔術方法會被呼叫。在這個魔術方法裡,我們可以實現任何子物件的轉殖,
*@return string
*/function __clone()
/*** 物件序列化
* 序列化是講任意資料轉換為字串格式的過程。序列化通常用來將整個物件存入資料庫或寫入檔案中。
* 當反序列化儲存的資料時,我們可以得到序列化之前的物件。但是,並不是所有得資料都可以被序列化,比如資料庫連線。
* 幸運的是,有乙個魔術方法可以幫我們解決這個問題。
*//** * 魔術方法__sleep()在對乙個物件序列化時(呼叫serialize())會被呼叫。
* 它不接收任何引數,而且應該返回乙個包含所有應該被序列化的屬性的陣列。
* 在該魔術方法中,也可以執行一些其他操作。
* 有一點要注意的是,不要再該函式中進行任何的析構操作,因為這可能會影響正在執行的物件。
*/function __sleep()
/*** 魔術方法__wakeup()在對儲存的物件反序列化時會被呼叫。它不接收任何引數,也沒有任何返回值。
* 可以用它來處理在序列化時丟失的資料庫連線或資源。
*/function __wakeup()
/*** 魔術方法__call()在呼叫不存在或不可訪問的方法時會被呼叫。
* 它接收兩個引數,乙個是呼叫的方法的名字,乙個是包含函式引數的陣列。
* 我們可以使用這種方法呼叫子物件中得同名函式。
* call_user_func_array(),這個函式允許我們動態呼叫乙個命名的函式
*@param $name
*@param $arguments
*@return mixed
*/function __call($name, $arguments)
// return null;
}/**
* 魔術方法__callstatic()與__call()的功能一樣,
* 唯一不同的是,該方法在嘗試訪問乙個不存在或不可訪問的靜態方法時會被呼叫。
*@param $name
*@param $arguments
*/public
static function __callstatic($name, $arguments)
/*** 魔術方法__invoke()在嘗試將物件作為函式使用時會被呼叫。
* 在該方法中定義的任何引數,都將被作為函式的引數。
* 由於引數的位置性,感覺$data可設定為陣列
*@param $data
*/function __invoke($data) else var_dump($data);
}/**
* __debuginfo() 是php5.6增加的特性,var_dump()乙個類時的回應
* 返回乙個包含物件屬性的陣列,未返回的屬性將不會顯示**/
public function __debuginfo()
}/**
* 自動載入/自動載入類檔案
* __autoload()方法並不是乙個魔術方法,但是這個方法非常有用。
* 但是,隨著php版本的更新,該函式已經不建議使用,取而代之的是spl_auto_register()函式
*/public function __autoload($class_name)
function getall($name, $age)
function getv()
}$object = new magicfunction();
//var_export()函式用來將php變數轉換為php**,它接收乙個包含物件屬性值的關聯陣列作為引數。
//var_export($object);
//$model = serialize($object);
//$x = unserialize($model);
//var_dump($x);
//echo "
";//$x(['wori','nidaye','21']);
//$x->all('wori','nidaye');
//var_dump($x);
//echo $x->name;
//echo "
";
php魔術常量,魔術方法
魔術常量 1。line 返回檔案中的當前行號。2。file 返回檔案的完整路徑和檔名。如果用在包含檔案中,則返回包含檔名。自php4.0.2 起,file 總是包含乙個絕對路徑,而在此之前的版本有時會包含乙個相對路徑。3。function 返回函式名稱 php4.3.0 新加 自php5 起本常量返...
invoke 魔術 PHP 魔術方法
php 魔術方法 構造方法 construct 析構方法 destruct get 與 set unset call 和 callstatic sleep 和 wakeup clone tostring invoke set state debuginfo construct 這個方法應該是最常用的...
php魔術方法
php5魔術方法 魔術函式 1。construct 建構函式 例項化物件時被呼叫,當 construct和以類名為函式名的建構函式同時存在時,construct將被呼叫,另乙個不被呼叫。2。destruct 析構函式 當刪除乙個物件或物件操作終止時被呼叫 程式結束後物件就摧毀 永遠都是最後執行的。3...