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



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

示例:

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

上面的代码显示了一个错误。正如我所说,我知道我可以使用以下代码实现同样的事情(但以上代码更具吸引力):

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

谢谢你的帮助!

我建议传入变量,但如果您想使用全局变量,可以执行此

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"
}

相关内容

  • 没有找到相关文章