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

来源:2-9 PHP类和对象之重载

小朱1

2017-02-22 19:49

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

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

写回答 关注

3回答

  • 111
    2017-04-06 11:20:51

    $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

  • 东东打小怪兽保护奥特曼
    2017-03-10 09:53:40

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

  • JaydenZhou
    2017-02-22 19:57:22

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

PHP进阶篇

轻松学习PHP中级课程,进行全面了解,用PHP快速开发网站程序

181734 学习 · 2575 问题

查看课程

相似问题