你如何将一个对象实例作为函数的默认参数?

问题描述:

我想为我的函数有一个默认参数。因此,例如,你通常可以做类似的事情。你如何将一个对象实例作为函数的默认参数?

function foo ($var = 'blah') 
{ 
    return $var; 
} 

但我遇到了一个解析错误,说我意想不到的T_VARIABLE,当我尝试一些更复杂的东西。

function foo ($var = $this->string) 
{ 
    return $var; 
} 

如何将对象的实例用作默认参数。谢谢!

+0

您可以使用'$ var = null',然后检查它是否为空。 – 2013-02-16 00:15:43

+0

默认参数应该是常量表达式,而不是变量,类的成员或调用函数。 – 2013-02-16 00:16:33

您不能从默认函数参数值实例化对象。

您可以测试$null,然后在该方法中实例化它。

function foo ($var = null) 
{ 
    return ($var === null) ? $this->string : $var; 
} 

你不能这样做。函数参数只能初始化为常量值。

我不认为你可以这样做。默认值只能是常量。

http://php.net/manual/en/functions.arguments.php

“的默认值必须是常量表达式,而不是(例如)一个变量,类成员,或者一个函数调用”。