X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> orm
Degradator
Degradator
Topic Starter сообщение 13.1.2015, 14:14; Ответить: Degradator
Сообщение #1


Добрый день, не так давно я занялся проектированием orm системы, сперва по приколу, а потом, как это и получается, решил довести ее до ума. В целом код уже почти готов, только есть одна маленькая проблема, не знаю как ее более красиво решить.
Суть такая - делается запрос на получение данных для связанных таблиц, он парсится, и получаем ассоциативный массив вида
[PHP][
[table1] => [[id, name],[id, name],[id, name]]
[table2] => [[id, name, table1Key],[id, name, table1Key],[id, name, table1Key]]
][/PHP]
После этого массивы преобразуются в православные объекты вида
[PHP]Entity1{
protected $id;
protected $name;
public getId(){return $this->id;}
public getName(){return $this->name;}
//set'теры
}
Entity2{
protected $id;//цифра
protected $name;//текст
protected $entity1;//!!! объект, не ид !!!!
public getId(){return $this->id;}
public getName(){return $this->name;}
public getEntity1(){return $entity2}
//set'теры
}[/PHP]
Для того чтобы просетать все сущности друг в друга, мне приходится ходить кажется 4 вложенными циклами. Мне кажется что это многовато, и можно сделать как-то более элегантно.
Вижу несколько вариантов решения -
1. оставить все как есть, но при это будет потеря производительности на больших объемах данных
2. сохранять все полученные обжекты в какой-то run-time кэш, и при обращении делать вот это getEntity1(){return ORM::getFromCache("Entity1", $this->getId);}
3. дописать какой-то мифический код с проверками и не ходить по процедурам, если это не необходимо (сомневаюсь что что-то получится, но можно попробовать порефакторить)

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


 



RSS Текстовая версия Сейчас: 29.3.2024, 2:47
Дизайн