不能将参数默认值设置为全局变量


Can't set argument default value to a global variable?

为什么我做不到呢?

function ($var1, $var2 = $GLOBALS['var']){
  ...
}

全局变量var是一个对象

不能使用变量作为默认值。你可以这样写:

function ($var1, $var2 = null){
  if(is_null($var2))
      $var2=$GLOBALS['var'];
  ...
}

函数的默认参数值必须为常量。

您可以将其设置为一个虚拟值,例如null,然后在函数开始时替换该值。

function ($var1, $var2 = $GLOBALS['var']){
  if(is_null($var2))
      $var2=$GLOBALS['var'];
}