Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有变量的php函数参数_Php_Function_Global Variables_Arguments - Fatal编程技术网

带有变量的php函数参数

带有变量的php函数参数,php,function,global-variables,arguments,Php,Function,Global Variables,Arguments,是否有一种方法可以设置默认函数参数,其中包含变量,例如 function example($test = 'abc', $image = $scripturl . 'abc.png') { // ... } 我之所以要这样做,是因为我有一些源代码,其中设置了全局变量设置和路径,以便在需要包含css文件或图像时很容易获取 上面的代码给出了一个意外的T_变量…默认值应为常量。它们应该具有在编译时而不是在运行时可用的值。默认值应该是常量。它们应该具有在编译时而不是运行时可用的值。否。

是否有一种方法可以设置默认函数参数,其中包含变量,例如

function example($test = 'abc', $image = $scripturl . 'abc.png')
{
        // ...
}
我之所以要这样做,是因为我有一些源代码,其中设置了全局变量设置和路径,以便在需要包含css文件或图像时很容易获取


上面的代码给出了一个意外的T_变量…

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

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

否。函数参数中的默认值必须是常量,而不是表达式的结果:


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

否。函数参数中的默认值必须是常量值,而不是表达式的结果:


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

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

不过,您可以像这样轻松地进行模拟:

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

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

不过,您可以像这样轻松地进行模拟:

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

好的,正如错误已经指出的,您不能在函数签名中使用变量作为(部分)默认值

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

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

好的,正如错误已经指出的,您不能在函数签名中使用变量作为(部分)默认值

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

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

一些OOP可能很有用。将$scripturl作为构建时设置的对象变量,然后它可以是$this->scripturl.Ye,我想这将是唯一的解决方案,并在函数中使用它:/-感谢您的回复!不要忘记
global$scripturl
对于非超全局的外部变量,某些OOP可能很有用。将$scripturl作为构建时设置的对象变量,然后它可以是$this->scripturl.Ye,我想这将是唯一的解决方案,并在函数中使用它:/-感谢您的回复!不要忘记
global$scripturl对于不是超全局的外部变量,我建议编译时保持不变,因为只有当源移动时,这些设置才会更改。我明白你的意思,但是有没有办法按照我的建议去做?我总是可以在函数中添加变量,尽管。。。我想我会选择@ThiefMaster solution,我建议的是编译时保持不变,因为只有当源代码移动时,这些设置才会改变。我明白你的意思,但是有没有办法按照我的建议去做?我总是可以在函数中添加变量,尽管。。。我想我会选择@ThiefMaster解决方案