繁体   English   中英

无法从数组中的类访问静态成员变量

[英]Cannot access static member variable from class in array

我正在尝试访问数组中的静态类成员变量。

我的代码(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 致命错误:常量表达式在第 12 行的 /var/www/html/index.php 中包含无效操作

在 PHP-5.6 上,我收到此错误:

PHP 解析错误:第 11 行 /var/www/html/index.php 中的语法错误、意外的 '$staticVar' (T_VARIABLE)、期望标识符 (T_STRING) 或类 (T_CLASS)

我只想在我的数组中包含字符串“test”。

奇怪的是,当我“回显”变量时,它按预期工作:

echo Foo::$staticVar // prints 'test'

我是 PHP 新手,我不知道我做错了什么。

不幸的是,您不能在类属性的初始声明中引用另一个变量或类。 这只是语言的限制。 一般的解决方法是在构造函数中初始化属性,例如

class Bar
{
    public $someArray = array();

    public function __construct()
    {
        $this->someArray = array(
            Foo::$staticVar
        );
    }
}

在一个模糊相关的注释中,PHP 5.6 至少在允许您将常量定义为基本表达式方面取得了一些模糊的进展,请参阅https://3v4l.org/6TDZV

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM