1

PHPで、クラス定義にプロパティを設定されたプロパティを持つSTDオブジェクトに設定する方法はありますか?

型キャストはできると思っていましたが、クラス定義のプロパティでは許可されていません。

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

これにより、このエラーがトリガーされます。

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

4

1 に答える 1

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;
    }
于 2012-08-01T00:27:06.790 に答える