繁体   English   中英

在PHP中使用超全局变量作为默认函数参数

[英]Using a Superglobal as a Default Function Parameter in PHP

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

例:

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

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

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

谢谢您的帮助!

我建议传入变量,但是如果要使用全局变量,则可以执行此操作

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

在函数顶部,并在其他位置设置该值,或者使用第二个想法-但是您需要在function参数中指定默认值,以使其可选。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM