魔术方法 __call 为什么需要两个形参?

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

慕无忌9207436

2019-07-19 18:56

<?php

class Car {

    public $speed = 10;


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

    public function __call($name,$agr){

        if($name=='speedDown'){

            $this->speed-=10;

        }

    }

}

$car = new Car();

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

echo $car->speed;

?>

比如      public function __call($name,$agr) 这行代码中参数$name我能理解,不过这个$agr我就不能理解了,如果__call()少加上一个参数就会报错,为什么呢?  而且$agr这个形参也并没有传入东西啊。。

写回答 关注

2回答

  • 月初影
    2020-03-03 15:12:54

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

  • 雪浪风尘
    2019-07-21 17:32:56

    我也发现这个问题,我猜想:可能是指这个函数可能会有多个参数传过来,比如:这个speedDown()函数没有参数值,这个$args没什么意义,但是如果speedDown(10,20...)有多个参数$args就代表这些参数。

PHP进阶篇

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

181727 学习 · 2575 问题

查看课程

相似问题