有没有办法设置包含变量的默认函数参数,例如
function example($test = 'abc', $image = $scripturl . 'abc.png')
{
// ...
}
我想要这样做的原因是因为我有源,我有路径设置的全局变量设置,以便在我需要包含css文件或图像时很容易抓取。
上面的代码给出了意想不到的T_VARIABLE ......
答案 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';
...
}