首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP -定义对象的静态数组

PHP -定义对象的静态数组
EN

Stack Overflow用户
提问于 2012-05-27 11:45:01
回答 1查看 63.2K关注 0票数 28

你能在PHP中初始化一个类中对象的静态数组吗?就像你能做到的那样

代码语言:javascript
复制
class myclass {
    public static $blah = array("test1", "test2", "test3");
}

但当我这么做的时候

代码语言:javascript
复制
class myclass {
    public static $blah2 = array(
        &new myotherclass(),
        &new myotherclass(),
        &new myotherclass()
    );
}

其中myotherclass定义在myclass的正上方。然而,这会抛出一个错误;有什么方法可以实现它吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-27 12:01:53

不是的。来自http://php.net/manual/en/language.oop5.static.php

与任何其他

静态变量一样,静态属性只能使用文字或常量进行初始化;不允许使用表达式。因此,虽然您可以将静态属性初始化为整数或数组(例如),但您不能将其初始化为另一个变量、函数返回值或对象。

我会将该属性初始化为null,使用访问器方法将其设置为私有,并让访问器在第一次调用时执行“真正”的初始化。下面是一个例子:

代码语言:javascript
复制
    class myclass {

        private static $blah2 = null;

        public static function blah2() {
            if (self::$blah2 == null) {
               self::$blah2 = array( new myotherclass(),
                 new myotherclass(),
                 new myotherclass());
            }
            return self::$blah2;
        }
    }

    print_r(myclass::blah2());
票数 29
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10771502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档