慕粉4220271
2016-10-30 15:58
public function __call($name, $args)这里的$args是什么?
<?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
name为方法名,args形式是数组这里是参数数组。调用不存在的方法speedDown过程中,自动调用__call()方法,并且以数组的形式传递被调用的不存在的方法的多个参数。
传递进来的参数吧。
PHP进阶篇
181835 学习 · 2577 问题
相似问题