我在一个带有正则表达式的类中有一个静态字段。这个正则表达式需要一个静态数组中的值列表,所以我创建了一个静态函数,它返回要插入正则表达式的组(例如(a|b|c|d)
)。问题是,当我声明一个静态字段时,我无法调用静态函数。
我需要将函数返回的值放在字段中。
示例:
class A {
public static function Foo()
{
return "Foo";
}
public static $Bar = "lol". self::Foo();
}
echo A::$Bar;
我得到了
Parse error: syntax error, unexpected '(', expecting ',' or ';' on line 7
我该如何解决?
答案 0 :(得分:1)
您无法使用“动态”值初始化静态属性。您只能使用文字或常量初始化它。
您还可以在manual:
中看到这一点与任何其他PHP静态变量一样,静态属性只能使用文字或常量初始化;不允许使用表达式。因此,虽然您可以将静态属性初始化为整数或数组(例如),但您可能不会将其初始化为另一个变量,函数返回值或对象。
如果你想使用静态函数,只需使用它:
echo A::Foo();
答案 1 :(得分:0)
不是试图以语言不允许的方式做某事,而是以一种语言允许的方式改变你的想法:
class A {
public static function Foo()
{
return "lol" . self::$Bar;
}
public static $Bar = "Foo";
}
echo A::Foo();