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

这里的 $name 和$args 分别代表什么 真心不懂

public function __call($name,$args){
      if($name=="speedDown") { 
       $this->speed -= 10;  }
    }

这段话  谁能 从开头 到结尾 的解释下  别用程序的用词 初学折很难理解 ,最好打一个比喻,谢谢了   $name 和 $aers  不是函数的参数吗  参数也没见赋值

正在回答

3 回答

$name 表示的是形式参数,指的是类中不存在的方法名,看$name不爽,你可以换成$a,$b或者$c等等都可以。

$arguments表示的是一个可以 数的尽的(可枚举的)数组的值。当然也可以替换成你喜欢的$xxx。

举例来说:

class Haha{

    public function __call($a,$b){

        echo "你好,你正在调用一个不存在方法".$a.",且数组值为:".implode ("",$b)."<br>";

    }

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

    echo "你好,你正在静态环境下调用一个不存在的方法".$name.",且数组值为:".implode ("",$arguments).

    "<br />";

    }

}

$obj =new methodTest();//新建一个实例

$obj->runTest('PHP001');//访问一个不存在的方法runTest

$obj::runTest('PHP002');//静态下访问一个不存在的方法runTest

输出结果为:

你好,你正在调用一个不存在方法runTest,且数组值为:PHP001
你好,你正在静态环境下调用一个不存在的方法runTest,且数组值为:PHP002

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

$name就是这个不存在的方法的方法名,比如Car这个类调用speedDown()方法,但是Car类中没有这个方法,于是就调用重载的方法__call()方法,那么第一个参数就是‘speedDown’.第二个参数更好理解了,它代表这个不存在的方法的参数,是个数组类型的参数,调用speedDown()中没有参数,如果有的话那么就会存在$args中了。

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

这是__call重载方法的连个形参,目的是用来接收调用该函数时传如的参数. 

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

举报

0/150
提交
取消

这里的 $name 和$args 分别代表什么 真心不懂

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