是否可以定义静态属性,同时在其中包含另一个静态属性?类似下面的代码示例:
class Foo {
public static $foo = array(Bar::$bar);
}
class Bar {
public static $bar = "Hello";
}
显然这不会编译,并导致以下错误:
致命错误:常量表达式包含无效操作
有没有办法在声明自己的时候调用另一个类static / constants?我正在努力减少代码重用,这对我来说是最简单的方法。
显然在PHP 5.6之前没有办法做到这一点,所以我使用的是PHP 7 / 7.1。
答案 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')