静态成员不能用作PHP5中的默认函数参数?

Nei*_*ang 3 php parameters static-members

剂量php5禁止此用法,以下代码不起作用

class Foo{
    public static $data = "abcd";
}

function tt($para = Foo::$data)
{
    echo $para;
}

tt ("rcohu");
Run Code Online (Sandbox Code Playgroud)

它报道:

PHP Parse error:  syntax error, unexpected T_VARIABLE, expecting T_STRING in /home/jw/sk/sk.php on line 6

Parse error: syntax error, unexpected T_VARIABLE, expecting T_STRING in /home/jw/sk/sk.php on line 6
Run Code Online (Sandbox Code Playgroud)

Jas*_*son 6

function tt($para = Foo::$data)
{
    echo $para;
}
Run Code Online (Sandbox Code Playgroud)

函数定义只能包含简单的赋值,而不是像Foo :: $ data这样复杂的赋值.

这样做:

function tt($para = false)
{
    if(!$para) $para = Foo::$data;
    echo $para;
}
Run Code Online (Sandbox Code Playgroud)

  • 它们只是不能包含变量表达式.`Foo :: DATA`其中`DATA`是一个类常量. (2认同)