Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Статическое заполнение динамическими элементами, в классе... 
:(
    Опции темы
Arantir
Дата 8.12.2012, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 16
Всего: 55



Встала передо мною такая вот незадача.

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

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

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

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

Это сообщение отредактировал(а) Arantir - 8.12.2012, 12:36


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
Fortop
Дата 8.12.2012, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Код

class C {
    private static $storage = null;

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



--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Arantir
Дата 8.12.2012, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 16
Всего: 55



Цитата(Fortop @ 8.12.2012,  14:10)
Код

class C {
    private static $storage = null;

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

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


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0838 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.