Oop PHP在类定义中将类属性设置为std对象
在PHP类定义中,有没有一种方法可以将属性设置为具有设置属性的STD对象 我想您可以键入cast,但类定义中的属性不允许这样做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)在声明过程中不能为类属性指定非常量值。从 …初始化必须是一个常量值——也就是说,它必须能够在编译时进行计算,
//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变更日志的哪一部分让您相信了这一点?