php中__call() 和 __callStatic方法的使用

__call 与__callStatic 魔法方法是php5.3后新增的,二者的应用场景:

1、当要调用的方法不存在或权限不足时,会自动调用__call 方法。

2、当调用的静态方法不存在或权限不足时,会自动调用__callStatic方法。

 

class Person
{

    public function __call($method, $arguments) {
        echo '我是要调用的不存在的动态方法名: ', $method, '<br>';
        echo '以下是通过__call方法显示的参数', '<br>';
        var_dump($arguments);
    }

     public static function __callStatic($method, $arguments) {
        echo '我是要调用的不存在的静态方法名: ', $method, '<br>';
        echo '以下是通过__callStatic方法显示的参数', '<br>';
        var_dump($arguments);
     }
}

// 调用对象不存在的方法hello
(new Person())->hello(['a', 'b'], ['c', 'd']);
echo '<hr>';
// 调用类不存在的静态方法world
Person::world(['e', 'f'], ['g', 'h']);

输出如下:

我是要调用的不存在的动态方法名: hello
以下是通过__call方法显示的参数
D:\wamp64\www\test\call.php:9:
array (size=2)
  0 => 
    array (size=2)
      0 => string 'a' (length=1)
      1 => string 'b' (length=1)
  1 => 
    array (size=2)
      0 => string 'c' (length=1)
      1 => string 'd' (length=1)
我是要调用的不存在的静态方法名: world
以下是通过__callStatic方法显示的参数
D:\wamp64\www\test\call.php:15:
array (size=2)
  0 => 
    array (size=2)
      0 => string 'e' (length=1)
      1 => string 'f' (length=1)
  1 => 
    array (size=2)
      0 => string 'g' (length=1)
      1 => string 'h' (length=1)

 

转载于:https://www.cnblogs.com/splendid/p/10657941.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值