为了账号安全,请及时绑定邮箱和手机立即绑定

这里重载为什么要设置参数,又为什么是两个?

<?php

class Car {

    public $speed = 10;


    //在这里使用重载实现speedDown方法

    public function __call($name, $args){

        if($name == 'speedDown'){

            $this->speed -= 10;

        }

    }

}

$car = new Car();

$car->speedDown(); //调用不存在的speedDown方法

echo $car->speed;


正在回答

4 回答

方法重载

public mixed  __call      ( string $name     , array $arguments     )

在对象中调用一个不可访问方法时,__call() 会被调用。

$name参数是要调用的方法名称。$arguments参数是一个枚举数组,包含着要传递给方法$name的参数。 


<?php
class Car {
    public $speed = 10;

    //在这里使用重载实现speedDown方法
    public function __call($name, $args){
        if($name == 'speedDown'){
            $this->speed -= 10;
            var_dump($name,$args);
        }
    }
}
$car = new Car();
$car->speedDown('我是参数','我是参数2'); //调用不存在的speedDown方法
echo $car->speed;


因为调用了不存在的方法speedDown 所以进行了重载,传入了2个参数都存放在$args里  


var_dump($name,$args);可以明显查看变量里面的内容

5 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

这里重载为什么要设置参数,又为什么是两个?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信