php 面向对象之—— 魔术方法


php 魔术方法

Php 模式方法

描述(需要在类中定义魔术方法)

 

__construct()

 

 

__destruct()

 

 

__tostring()

当对象被当作String使用时,这个方法会被自动调用。如:

Public function __tostring(){

  Return “这是类的魔术方法__tostring”;

}

Echo $myObj;

 

 

 

__invoke()

当对象被当成方法是,这个方法会自动被调用。如:

Public function __invoke($x){

  Return “这是类的魔术方法__tostring”;

}

 

$myObj(4);

 

__call()

当对象访问不存在的方法名称是,__call()方法会自动调用

//第一个参数是方法名,第二个参数是参数数组

Public function __call($name,$arguments){

  Echo “调用”.$name.”方法”.”参数”.implode(“,”,$arguments).”<br>”;

}

 

 

 

这两个方法在php里面也被称为方法的重载(overloading,不同于overwrite)通过这2个方法,同一个方法的名称的调用可以对应不同的方法实现。

__callstatic()

__当对象访问不存在的静态方法名称是,__callstatic()方法会被自动调用(需要定义为static方法)

//第一个参数是方法名,第二个参数是参数数组

Public static function __callStatic($name,$arguments){

  Echo “调用静态static”.$name.”方法”.”参数”.implode(“,”,$arguments).”<br>”;

}

 

 

__get()

读取不可访问属性的值时,__get()会被调用

 

Public function __get($name){

  Return “getting 属性”.$name;

}

 

 

所谓不可访问熟悉,实际上就是在调用某个属性时发现这个熟悉没有被定义(或private)这个时候不同的操作会触发不同的魔术方法。

这几个方法也被称为属性重载的魔术方法。

__set()

在给不可访问属性赋值时,__set()会被调用

//第一个参数属性名;第二个参数属性值

Public function __get($name,$value){

  Echo “setting 属性”.$name.”=”.$value.”<br>”;

 

}

 

 

__isset()

当对不可访问属性调用isset()或empty()时,__isset()会被调用。

Public function __isset($name){

  Echo “__isset invoked<br>”;

  Return false;

 

}

 

 

__unset()

当对不可访问属性调用unset()时,__unset()会被调用。

__clone()

对象的复制(copy),而不是直接赋值

$jam1 =clone $jam;

而不是

$jam1=$jam;

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牵手生活

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值