PHP 类的魔术方法详解

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值