Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Статическое заполнение динамическими элементами


Автор: Arantir 8.12.2012, 12:32
Встала передо мною такая вот незадача.

Как можно наиболее рационально заполнить статически поля класса некими экземплярами других классов, то есть создаваемыми через new.

В целом нужно:
1) Создать экземпляры некого набора классов во время создания класса, чтобы экземпляры были актуальными.
2) Не вызывать конструкторы этого набора классов более одного раза за время жизни класса (т.е. не вызывать их повторно при создании нового экземпляра этого класса).
3) Не нарушать инкапсуляцию, экземпляры этого набора классов должны быть доступны только внутри класса, в котором объявлены.

Хотелось бы:
Код

class MyClass
{
    private static $objects = array
    (
        "key" => new SomeClass("args");
    );
}
Но ж, ясен пень, так нельзя...
 
В идеале хотелось бы что-то аналогичное по результату с блоком static{} из Java.
Можно ли как-то реализовать подобную функциональность?

Автор: Fortop 8.12.2012, 15:10
Код

class C {
    private static $storage = null;

    public function __construct() {
        if (null === self::$storage) {
            // заполняем его
        }
    }
}

Автор: Arantir 8.12.2012, 16:10
Цитата(Fortop @ 8.12.2012,  14:10)
Код

class C {
    private static $storage = null;

    public function __construct() {
        if (null === self::$storage) {
            // заполняем его
        }
    }
}

Черт, это так просто просто, что мне аж стыдно  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)