1

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

例子:

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

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

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

谢谢您的帮助!

4

1 回答 1

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"
}
于 2013-07-12T00:07:39.390 回答