重载函数里面的$args有什么用?

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

枫雪孤城

2017-02-06 11:55

知道$name,但不清楚$args有什么用

写回答 关注

2回答

  • 失落夜
    2017-02-06 14:47:16
    已采纳

    <?php

    class Car {

        public $speed = 10;


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

        

        

        public function __call($name, $args) {

            

             $num=count($args);  

                if($num==2){  

                if ($name == 'speedDown') {

                $this->speed -= 10;

                }

            }  

        }

    }

    $car = new Car();

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

    echo $car->speed;

    请看改过的这段代码 $args其实就是传递的参数个数。这里传递$car->speedDown('speedDown','223e');两个参数($car->speedUp(); 这样写也行 但是只能传递一个参数)所以在__call函数里判断

     $num=count($args);  

                if($num==2){  

    得到正确的结果 如果只传递一个参数 那么$arg的值就是1

    你看一下这个例子就明白了。

    枫雪孤城

    非常感谢!

    2017-02-06 23:37:45

    共 2 条回复 >

  • 失落夜
    2017-02-06 13:45:07

    这里的$name对应的是speedDown这个方法,$args是传进来的参数以数组的形式存在,传的是$car->speedDown()这个方法里面的值

    枫雪孤城

    相当于speedDown($args)吗?

    2017-02-06 14:18:14

    共 1 条回复 >

PHP进阶篇

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

181835 学习 · 2577 问题

查看课程

相似问题