public function __call($name, $args)这里的$args是什么?

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

慕粉4220271

2016-10-30 15:58

public function __call($name, $args)这里的$args是什么?

写回答 关注

3回答

  • 楚童
    2016-12-10 11:27:35

    <?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

  • winner4265975
    2016-10-30 21:03:42

    name为方法名,args形式是数组这里是参数数组。调用不存在的方法speedDown过程中,自动调用__call()方法,并且以数组的形式传递被调用的不存在的方法的多个参数。

    慕粉4220...

    谢谢,大概了解

    2016-10-31 10:22:34

    共 1 条回复 >

  • 慕后端3206034
    2016-10-30 16:37:42

    传递进来的参数吧。

    慕粉4220...

    前面没有这个参数啊

    2016-10-30 16:43:32

    共 1 条回复 >

PHP进阶篇

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

181734 学习 · 2575 问题

查看课程

相似问题