Php 公共静态变量值
我试图声明一个公共静态变量,它是一个数组数组:Php 公共静态变量值,php,class,variables,static,public,Php,Class,Variables,Static,Public,我试图声明一个公共静态变量,它是一个数组数组: class Foo{ public static $contexts = array( 'a' => array( 'aa' => something('aa'), 'bb' => something('bb'), ), 'b' => array( 'aa' => somethi
class Foo{
public static $contexts = array(
'a' => array(
'aa' => something('aa'),
'bb' => something('bb'),
),
'b' => array(
'aa' => something('aa'),
'bb' => something('bb'),
),
);
// methods here
}
function something($s){
return ...
}
但我有一个错误:
分析错误:分析错误,应为
`“)”在
声明类属性时不能使用表达式。也就是说,这里不能调用
something()
,只能使用静态值。在某些时候,您必须在代码中以不同的方式设置这些值
与任何其他PHP静态变量一样,静态属性只能使用文本或常量初始化;不允许使用表达式。因此,虽然可以将静态属性初始化为整数或数组(例如),但不能将其初始化为其他变量、函数返回值或对象
例如:
class Foo {
public static $bar = null;
public static function init() {
self::$bar = array(...);
}
}
Foo::init();
或者,如果要实例化该类,请在
\u构造中执行该操作。什么是something()
?另外,这是声明为类属性(publicstatic$contexts
)还是在方法中的某个地方?这是一个普通函数。。它是在课堂外宣布的。变量被声明为类属性“在类之外声明”?我们能看到这段代码和类的其余部分在哪里吗?“在外面。”“类属性”。它是什么?请显示更完整的代码。我的意思是函数是在外部声明的,变量是公共静态的。。。在课堂上。我编辑了我的q以使它更清晰这很奇怪,因为我可以声明一个公共静态函数,它将返回我的数组,它将是相同的。在解析源代码时创建类属性的初始值。此时,需要为这些初始类值保留内存,因为它们需要存储在某个地方。这发生在代码实际执行之前。但是,您不能为函数的返回值保留内存,因为函数可能返回任何内容。由于解析还没有完成,函数还不能执行。因此,在解析代码时,只允许已知大小的静态值。函数稍后在运行时(显式)调用,并可能返回任何内容。