在包含另一个静态属性时声明静态属性

时间:2017-02-17 01:23:04

标签: php oop php-7

是否可以定义静态属性,同时在其中包含另一个静态属性?类似下面的代码示例:

class Foo {
    public static $foo = array(Bar::$bar);
}

class Bar {
    public static $bar = "Hello";
}

显然这不会编译,并导致以下错误:

致命错误:常量表达式包含无效操作

有没有办法在声明自己的时候调用另一个类static / constants?我正在努力减少代码重用,这对我来说是最简单的方法。

显然在PHP 5.6之前没有办法做到这一点,所以我使用的是PHP 7 / 7.1。

2 个答案:

答案 0 :(得分:2)

您可以让其中一个类具有const。这适用于5.6及更高版本

class Foo {
    const CON = 'Yep';
}

class BAR {
    public static $var = Foo::CON;
}
echo BAR::$var;

答案 1 :(得分:1)

您可以使用第一个类变量设置常量,并在第二个类变量中使用它,例如:

class Bar {
    public static $bar = 'Hello';
}

define('bar_constant', Bar::$bar);

class Foo {
    public static $foo = array(bar_constant);
}

// now Foo::$foo = array('Hello')