带有变量的php函数参数

时间:2012-04-04 22:03:56

标签: php function global-variables arguments

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

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

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

上面的代码给出了意想不到的T_VARIABLE ......

4 个答案:

答案 0 :(得分:4)

默认值应为常量。它们应该具有在编译时可用的值,而不是在运行时中。

答案 1 :(得分:3)

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

你可以像这样轻松地模仿它:

function example($test = 'abc', $image = null) {
    if($image === null) {
        global $scripturl;
        $image = $scripturl . 'abc.png';
    }
}

答案 2 :(得分:1)

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

在解析参数时,$ scripturl无论如何都不会存在,并且总是以NULL形式出现,因为在使用之前你无法将其设为全局。

答案 3 :(得分:1)

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

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

function example($test = 'abc', $image = null)
{
   global $scripturl;
   if($image === null) $image = $scripturl . 'abc.png';
   ...
}