上QQ阅读APP看书,第一时间看更新
4.6 PHP 7的新变化4——参数处理机制的修改
在PHP 7中,处理参数的机制出现了新的变化。
1.不再支持重复参数命名
比如下面的代码执行的时候会报错:
public function ff($a, $b, $c, $c) { // }
2.func_get_arg()和func_get_args()函数的调整
在PHP 7中,func_get_arg()和func_get_args()两个函数将返回参数当前的值,而不是传入时的值。当前的值有可能会被修改,所以当前值和传入时的值不一定相同。
【例4.11】(实例文件:源文件\ch04\4.11.php)
<?php function ff($x) { $x++; var_dump(func_get_arg(0)); var_dump(func_get_args(0)); } ff(100); ?>
在PHP 7中,上面的代码会打印101,而不是100。运行结果如图4-12所示。如果想打印原始的值,调用的顺序调整一下即可,也就是将x++语句放到两个函数的后面。
图4-12 在PHP 7中的运行结果
在PHP 5或者更早的版本中,运行结果如图4-13所示。
图4-13 在PHP 5中的运行结果
3.在打印异常回溯信息时将显示修改后的值
例如下面的代码:
function foo($x) { $x = 100; throw new Exception; } foo("这里是原始值");
在PHP 7中的运行结果:
Stack trace: #0 file.php(4): foo(42) #1 {main}
在PHP 5中的运行结果:
Stack trace: #0 file.php(4): foo('string') #1 {main}
这个调整不会影响代码的运行,不过在调试的时候需要注意这个变化。