Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop PHP在类定义中将类属性设置为std对象_Oop_Class_Std_Php - Fatal编程技术网

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

Oop PHP在类定义中将类属性设置为std对象,oop,class,std,php,Oop,Class,Std,Php,在PHP类定义中,有没有一种方法可以将属性设置为具有设置属性的STD对象 我想您可以键入cast,但类定义中的属性不允许这样做 //example. class Foo{ private static $Obj = (object) ['bizz', 'bazz']; } 这将触发此错误: 分析错误:语法错误,意外的'(object)'(object)(T_object_CAST)在声明过程中不能为类属性指定非常量值。从 …初始化必须是一个常量值——也就是说,它必须能够在编译时进行计算,

在PHP类定义中,有没有一种方法可以将属性设置为具有设置属性的STD对象

我想您可以键入cast,但类定义中的属性不允许这样做

//example.
class Foo{
   private static $Obj = (object) ['bizz', 'bazz'];
}
这将触发此错误:


分析错误:语法错误,意外的'(object)'(object)(T_object_CAST)

在声明过程中不能为类属性指定非常量值。从

…初始化必须是一个常量值——也就是说,它必须能够在编译时进行计算,并且不能依赖于运行时信息才能进行计算

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

class Foo {
    private static $Obj;

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

这就是我目前正在做的。糟糕的是,没有一种方法来处理对象文本。还没有使用5.4,还要等几个月,所以这可能是无知的。但是
self::$Obj=(object)['bizz','bazz']如前所述,它似乎试图将'bizz'和'bazz'强制转换为anon对象,这些对象被分配给self:$Obj,这是否会将self:$Obj强制转换为一个数组数据类型,该数组包含两个anon对象?哈哈,你的权利,该数组可能会有问题,但这里有一些相关信息@MikePurcell它相当于
(object)array('bizz','buzz')
,它将生成一个
stdclass
,具有两个属性,
0
1
(我知道,PHP让你做一些奇怪的事情)@Phil:Gotcha,因此它为对象分配了两个属性,不尝试创建两个对象。为什么您认为(但不限于PHP5.4)中的任何内容在该PHP版本中应该有所不同?PHP变更日志的哪一部分让您相信了这一点?