1

有没有办法设置带有变量的默认函数参数,例如

function example($test = 'abc', $image = $scripturl . 'abc.png')
{
        // ...
}

我想这样做的原因是因为我有源,我有全局变量设置和路径设置,以便在我需要包含 css 文件或图像时很容易抓取。

上面的代码给出了一个意外的 T_VARIABLE...

4

4 回答 4

4

默认值应该是一个常数。它们应该具有在编译时已经可用的值,而不是在运行时。

于 2012-04-04T22:09:16.783 回答
3

那是不可能的;默认参数必须是常量。

您可以像这样轻松地模拟它:

function example($test = 'abc', $image = null) {
    if($image === null) {
        global $scripturl;
        $image = $scripturl . 'abc.png';
    }
}
于 2012-04-04T22:10:14.747 回答
1

否。函数参数中的默认值必须是常量值,而不是表达式的结果:http: //php.net/manual/en/functions.arguments.php#functions.arguments.default

在解析参数时,无论如何 $scripturl 将不存在,并且始终显示为 NULL,因为在使用它之前您无法将其设为全局。

于 2012-04-04T22:10:14.623 回答
1

好吧,正如错误已经说明的那样,您不能将变量用作函数签名中的(部分)默认值。

但是,您可以做的是传递一些已知的非法值(null例如),然后检查函数内部并在需要时分配:

function example($test = 'abc', $image = null)
{
   global $scripturl;
   if($image === null) $image = $scripturl . 'abc.png';
   ...
}
于 2012-04-04T22:10:57.197 回答