PHP OOP 魔術方法
阿新 • • 發佈:2017-06-12
需要 con 實例化 echo 對象 def sse ase urn
1、__construct():構造函數,new一個新對象時,自動調用
[public] function __construct($name=""){ $this -> name = $name; }
2、__destruct():析構函數,當一個對象被銷毀前,自動調用
function __destruct(){ echo ""; }
3、__get():訪問類中私有屬性時,自動調用。傳遞讀取的屬性名,返回$this->屬性名
function __get($key){
switch ($key) {
case ‘name‘:
return $this->$key."(這是__get讀取時加上的文字)";
case ‘age‘:
return "0".$this->$key;
default:
return $this->$key;
}
return $this->$key;
}
4、__set():給類的私有屬性賦值時,自動調用。傳遞需要設置的屬性名和屬性值
function __set($key,$value){ if($key=="name"){ $this->$key = $value."(這是__set設置上的文字!)"; return; } $this->$key = $value; }
5、__isset():使用isset()檢測對象私有屬性時,自動調用。傳遞檢測的屬性名,返回isset($this->屬性名)
function __isset($name){ if($name=="sex") return; return isset($this->$name); }
6、__unset():使用unset()刪除對象私有屬性時,自動調用。傳遞刪除的函數名,方法中執行unset($this->屬性名)
function __unset($name){ if($name=="name"){ echo "<span style=‘color:red;‘>哈哈哈哈name你刪不掉!</span><br>"; return; } unset($this->$name); }
7、__toString():使用echo打印對象時,自動調用。返回想要在打印對象時顯示的內容,返回必須是字符串
function __toString(){ $str = <<<str 您要打印的對象屬性如下:<br/> \$name => {$this->name};<br/> \$age => {$this->age};<br/> str; return $str; }
8、__call():調用一個類中未定義或未公開的方法時,自動調用。傳遞被調用的函數名,和參數列表數組
function __call($funcName,$funcParams){ echo "您調用的函數:{$funcName},參數列表"; print_r($funcParams) }
9、__clone():當使用clone關鍵字克隆一個對象時,自動調用。作用是為新克隆的對象進行初始化賦值
function __clone(){ $this->name = "李四"; }
10、__sleep():對象反序列化時,自動調用。返回一個數組,數組中的值就是可以序列化的屬性
function __sleep(){ return array("name","age"); //只有name/age兩個屬性可以串行化 }
11、__wakeup():對象反序列化時,自動調用。為反序列化新產生的對象,進行初始化賦值
function __wakeup(){ $this->name = "李四"; }
12、__autoload():需要在類外部聲明函數。當實例化一個未聲明的類時,自動調用。傳遞實例化的類名,可以使用類名自動加載對應的類文件
function __autoload($className){ include strtolower($className).".class.php" }
PHP OOP 魔術方法