有没有办法设置带有变量的默认函数参数,例如
function example($test = 'abc', $image = $scripturl . 'abc.png')
{
// ...
}
我想这样做的原因是因为我有源,我有全局变量设置和路径设置,以便在我需要包含 css 文件或图像时很容易抓取。
上面的代码给出了一个意外的 T_VARIABLE...
有没有办法设置带有变量的默认函数参数,例如
function example($test = 'abc', $image = $scripturl . 'abc.png')
{
// ...
}
我想这样做的原因是因为我有源,我有全局变量设置和路径设置,以便在我需要包含 css 文件或图像时很容易抓取。
上面的代码给出了一个意外的 T_VARIABLE...
默认值应该是一个常数。它们应该具有在编译时已经可用的值,而不是在运行时。
那是不可能的;默认参数必须是常量。
您可以像这样轻松地模拟它:
function example($test = 'abc', $image = null) {
if($image === null) {
global $scripturl;
$image = $scripturl . 'abc.png';
}
}
否。函数参数中的默认值必须是常量值,而不是表达式的结果:http: //php.net/manual/en/functions.arguments.php#functions.arguments.default
在解析参数时,无论如何 $scripturl 将不存在,并且始终显示为 NULL,因为在使用它之前您无法将其设为全局。
好吧,正如错误已经说明的那样,您不能将变量用作函数签名中的(部分)默认值。
但是,您可以做的是传递一些已知的非法值(null
例如),然后检查函数内部并在需要时分配:
function example($test = 'abc', $image = null)
{
global $scripturl;
if($image === null) $image = $scripturl . 'abc.png';
...
}