由于以下代码,下面的示例出现语法错误:
"another_key" => [ 2 => self::$someStr ]
使用如下内容:
"another_key" => [ 2 => "bar" ]
语法是否正确。有没有办法访问$ someStr而不是硬编码字符串?
<?php
class Foo {
protected static $someStr = 'bar';
private static $arr = [
"some_key" => [ 1 ],
"another_key" => [ 2 => self::$someStr ]
];
}
答案 0 :(得分:2)
您无法访问其他静态变量声明中的静态变量。您可以声明一个类常量,也可以通过函数访问来初始化它。类常量看起来像这样:
class Foo {
const someStr = 'bar';
private static $arr = [
"some_key" => [ 1 ],
"another_key" => [ 2 => self::someStr ]
];
}
或使用功能:
class Foo {
private static $someStr = 'bar';
private static $arr = [
"some_key" => [ 1 ],
"another_key" => [ 2 => null ]
];
private static function setKey(){
self::$arr['another_key'] = [2 => self::$somStr];
}
}
在访问变量之前,您必须在某个时刻致电Foo::setKey()
。
答案 1 :(得分:0)
如果要访问属性以设置另一个属性的值,则应在类的构造函数中执行此操作。像这样:
class Foo {
protected static $someStr = 'bar';
private static $arr = [
'some_key' => [1]
];
public function __constructor()
{
self::arr['another_key'] = [2 => self::$somStr];
}
}
为此,您需要实例化您的课程。
您可以在PHP documentation中查看有关属性声明的一些示例。