小朱1
2017-02-22 19:49
public function __call($name,$args){ if($name=="speedDown") { $this->speed -= 10; } }
这段话 谁能 从开头 到结尾 的解释下 别用程序的用词 初学折很难理解 ,最好打一个比喻,谢谢了 $name 和 $aers 不是函数的参数吗 参数也没见赋值
$name 表示的是形式参数,指的是类中不存在的方法名,看$name不爽,你可以换成$a,$b或者$c等等都可以。
$arguments表示的是一个可以 数的尽的(可枚举的)数组的值。当然也可以替换成你喜欢的$xxx。
举例来说:
class Haha{
public function __call($a,$b){
echo "你好,你正在调用一个不存在方法".$a.",且数组值为:".implode ("",$b)."<br>";
}
public static function __callStatic($name,$arguments){
echo "你好,你正在静态环境下调用一个不存在的方法".$name.",且数组值为:".implode ("",$arguments).
"<br />";
}
}
$obj =new methodTest();//新建一个实例
$obj->runTest('PHP001');//访问一个不存在的方法runTest
$obj::runTest('PHP002');//静态下访问一个不存在的方法runTest
输出结果为:
你好,你正在调用一个不存在方法runTest,且数组值为:PHP001
你好,你正在静态环境下调用一个不存在的方法runTest,且数组值为:PHP002
$name就是这个不存在的方法的方法名,比如Car这个类调用speedDown()方法,但是Car类中没有这个方法,于是就调用重载的方法__call()方法,那么第一个参数就是‘speedDown’.第二个参数更好理解了,它代表这个不存在的方法的参数,是个数组类型的参数,调用speedDown()中没有参数,如果有的话那么就会存在$args中了。
这是__call重载方法的连个形参,目的是用来接收调用该函数时传如的参数.
PHP进阶篇
181835 学习 · 2577 问题
相似问题