在PHP中使用Superglobal作为默认函数参数

时间:2013-07-11 23:43:09

标签: php global-variables default user-defined-functions default-parameters

我可以通过多种方式来实现以下功能;但我希望有一个超级优雅的解决方案。我可以使用PHP超全局变量作为用户定义函数参数的默认值吗?

示例:

function test1($foo=$_SERVER['PATH']) {
   echo $foo;
}

以上代码吐出错误。就像我说的,我知道我可以使用以下代码实现相同的功能(但上面的代码更具吸引力):

function test2($foo) {
   if (!isset($foo)) $foo = $_SERVER['PATH'];
   echo $foo;
}

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我建议传入变量,但是如果你想使用全局变量,你可以这样做

function test2() {
    global $foo;
    ...
}

位于函数的顶部并将值设置在其他位置,或者按照您的第二个想法 - 但您需要在函数参数中指定一个默认值以使其可选。

function test2($foo='') {
   if (empty($foo)) $foo = $_SERVER['PATH'];
   echo $foo;
}

使用函数外部变量的另一种方法是通过引用传递它们。这会传递对原始变量的引用,而不是副本,因此您在函数内所做的任何更改都会影响函数范围之外的原始变量值。

$foo = 'bar';
function test2(&$foo) {
   echo $foo;  // this will output "bar"
}