魔術方法:
__construct() 構造函數 ,在實例化對象時被調用
__distruct() 析構函數 ,對象結束是被調用
__get() 屬性重載,在讀取不可訪問屬性的值是,會被調用
__set() 屬性重載,在給不可訪問屬性賦值時,會被調用
__isset() 屬性重載,在對不可訪問屬性調用isset()時,被調用
__unset() 屬性重載,在對不可訪問屬性調用unset()時,被調用
__clone() 克隆
__toString 用於返回一個字符串,只有在直接使用echo 或print時才能生效
__autoload() 自動加載類文件
__sleep() 當對象串行化那一瞬間會調用該方法,
__wakeup() 在反序列化操作那一瞬間會調用該方法
class myclass{
protected $aa = 10; // 保護的屬性
public $bb = 5; // 公共屬性
public function __construct(){
echo"構造函數";
}
public function __destruct(){
echo"析構函數函數";
}
public function fun(){
echo"普通函數";
}
public function __get($var){
echo "獲取",$var,"屬性值";
}
public function __set($key,$val){
echo "設置",$key,"的屬性值為:",$val;
}
public function __isset($var){
echo "判斷是否有這個屬性:",$var;
}
public function __unset($var){
echo "消除屬性:",$var;
}
public function __call($var,$arg){
//$arg 為數組
echo "調用不存在的",$var,"方法","參數為:";
var_export($arg);
}
public function __toString(){
return "直接echo 或 print 輸出";
}
}
$aa = new myclass(); // 調用 __construct 方法
$aa->fun(); // 正常調用
echo $aa->aa; // 調用 __get 方法
echo $aa->bb; // 正常調用 屬性 bb
$aa->aa = 15; // 調用 __set 方法
var_dump(isset($aa->aa)); // 調用 __isset 方法
var_dump(isset($aa->bb)); // 正常判斷
unset($aa->bb); // 正常消除
unset($aa->aa); // 調用 __unset 方法
$aa->abc('fsdf','rrere','rewrwe'); // 調用 __call 方法
echo $aa; // 調用 __tostring 方法