无法从数组中的 class 访问静态成员变量
Cannot access static member variable from class in array
我正在尝试访问数组中的静态 class 成员变量。
我的代码(index.php):
<?php
class Foo
{
public static $staticVar = 'test';
}
class Bar
{
public $someArray = array(
Foo::$staticVar
);
}
$cls = new Bar();
var_dump($cls->someArray);
?>
在 PHP-7.0 我得到这个错误:
PHP Fatal error: Constant expression contains invalid operations in
/var/www/html/index.php on line 12
在 PHP-5.6 我得到这个错误:
PHP Parse error: syntax error, unexpected '$staticVar' (T_VARIABLE),
expecting identifier (T_STRING) or class (T_CLASS) in
/var/www/html/index.php on line 11
我只想在我的数组中包含字符串 "test"。
奇怪的是,当我 'echo' 输出变量时,它按预期工作:
echo Foo::$staticVar // prints 'test'
我是 PHP 的新手,我不知道自己做错了什么。
不幸的是,您不能在 class 属性 的初始声明中引用另一个变量或 class。这只是语言的局限性。一般的解决方法是在构造函数中初始化 属性,例如
class Bar
{
public $someArray = array();
public function __construct()
{
$this->someArray = array(
Foo::$staticVar
);
}
}
关于一个模糊相关的说明,PHP 5.6 至少在允许您将常量定义为基本表达式方面取得了一些模糊的进展,请参阅 https://3v4l.org/6TDZV
我正在尝试访问数组中的静态 class 成员变量。
我的代码(index.php):
<?php
class Foo
{
public static $staticVar = 'test';
}
class Bar
{
public $someArray = array(
Foo::$staticVar
);
}
$cls = new Bar();
var_dump($cls->someArray);
?>
在 PHP-7.0 我得到这个错误:
PHP Fatal error: Constant expression contains invalid operations in /var/www/html/index.php on line 12
在 PHP-5.6 我得到这个错误:
PHP Parse error: syntax error, unexpected '$staticVar' (T_VARIABLE), expecting identifier (T_STRING) or class (T_CLASS) in /var/www/html/index.php on line 11
我只想在我的数组中包含字符串 "test"。
奇怪的是,当我 'echo' 输出变量时,它按预期工作:
echo Foo::$staticVar // prints 'test'
我是 PHP 的新手,我不知道自己做错了什么。
不幸的是,您不能在 class 属性 的初始声明中引用另一个变量或 class。这只是语言的局限性。一般的解决方法是在构造函数中初始化 属性,例如
class Bar
{
public $someArray = array();
public function __construct()
{
$this->someArray = array(
Foo::$staticVar
);
}
}
关于一个模糊相关的说明,PHP 5.6 至少在允许您将常量定义为基本表达式方面取得了一些模糊的进展,请参阅 https://3v4l.org/6TDZV