这里重载为什么要设置参数,又为什么是两个?

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

qq_岚风依旧_0

2015-02-24 05:37

<?php

class Car {

    public $speed = 10;


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

    public function __call($name, $args){

        if($name == 'speedDown'){

            $this->speed -= 10;

        }

    }

}

$car = new Car();

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

echo $car->speed;


写回答 关注

1回答

  • vLiang
    2015-02-24 15:51:16

    方法重载

    public mixed  __call      ( string $name     , array $arguments     )

    在对象中调用一个不可访问方法时,__call() 会被调用。

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


    <?php
    class Car {
        public $speed = 10;
    
        //在这里使用重载实现speedDown方法
        public function __call($name, $args){
            if($name == 'speedDown'){
                $this->speed -= 10;
                var_dump($name,$args);
            }
        }
    }
    $car = new Car();
    $car->speedDown('我是参数','我是参数2'); //调用不存在的speedDown方法
    echo $car->speed;


    因为调用了不存在的方法speedDown 所以进行了重载,传入了2个参数都存放在$args里  


    var_dump($name,$args);可以明显查看变量里面的内容

PHP进阶篇

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

181835 学习 · 2577 问题

查看课程

相似问题