魔术方法:
__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 方法