PHP将类属性设置为类定义中的std对象

时间:2012-08-01 00:20:49

标签: oop class std php

PHP中是否有一种方法可以将属性设置为具有set属性的STD对象?

我原以为你可以输入强制转换,但不允许在类定义中使用属性。

//example.
class Foo{
   private static $Obj = (object) ['bizz', 'bazz'];
}

将触发此错误:

Parse error: syntax error, unexpected '(object)' (object) (T_OBJECT_CAST)

1 个答案:

答案 0 :(得分:3)

您无法在声明期间为类属性指定非常量值。来自http://php.net/language.oop5.properties

  

...初始化必须是一个常量值 - 也就是说,它必须能够在编译时进行评估,并且必须不依赖于运行时信息才能进行评估。

您需要使用类方法初始化属性,例如

class Foo {
    private static $Obj;

    private static getObj() {
        if (null === self::$Obj) {
            self::$Obj = (object) ['bizz', 'bazz'];
        }
        return self::$Obj;
    }