84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
可以只传$a和$c吗
<?php $a = new c; class c { function __construct(){ $this->f(1,,1);//会报错 } function f($a, $b = 'hello', $c) { if($a) echo $a; if($b) echo $b; if($c) echo $c; } } ?>
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
带默认值的函数参数应该放到最后.
再改不了f()方法的情况下,可以加个方法来实现
_f(1, 1); } public function f($a, $b = 'hello', $c) { if($a) echo $a; if($b) echo $b; if($c) echo $c; } public function _f() { $input = func_get_args(); $arguments = []; $reflection = new ReflectionMethod($this, 'f'); foreach ($reflection->getParameters() as $parameter) { $arguments[] = $parameter->isDefaultValueAvailable() ? $parameter->getDefaultValue() : array_shift($input); } return call_user_func_array([$this, 'f'], $arguments); } } $c = new C();
_f()方法接收到的参数,会依次传值给f()方法中没有默认值的参数。
带默认值的函数参数应该放到最后.
再改不了f()方法的情况下,可以加个方法来实现
_f()方法接收到的参数,会依次传值给f()方法中没有默认值的参数。