PHP 7+MySQL 8动态网站开发从入门到精通(视频教学版)
上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}

这个调整不会影响代码的运行,不过在调试的时候需要注意这个变化。