php __call()方法

php中定义了多种魔术方法,包括__sleep(),__tostring()等等,__call()是其中之一,今天主要说__call(),剩下的后面再唠。


不多说了,先看代码:

class TestCall{
    public function __construct(){
        
    }
    
    
    public function __call($method, $param){
        echo strval($method);
        var_dump($param);
        echo "call the call!";
    }
}


$test = new TestCall();

$test->HEHE(1,2,3);

运行结果:

HEHEarray(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
call the call!

当调用一个类中没有定义的方法时,就会调用该类的__call方法,当然,首先你要重写__call方法。

__call方法有2个参数,method和param,对应真实的方法名字和参数。

到底应用在什么场景呢?

当需要使用统一的调用方式,但接口又有很多的时候,就可以使用该方法了。比如需要通过统一的入口function操作redis,但是redis中又包含了set、hset、hmset等方法,这时就在基类中实现一个__call()方法,当外部函数操作redis时,就是通过__call方法完成了对function的参数的指定。不需要再基类中重复的实现set、hset、hmset方法了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值