Инициализация многих объектов и количество запросов к БД.

alex77

Новичок
Инициализация многих объектов и количество запросов к БД.

Здравствуйте.

Как лучше и правильнее реализовать следующее:

Существует объект-"контейнер"(к), имеющий свойство - массив объектов(о) одного класса.
Как надо инициализировать все (о)?

я вижу 2 способа

1. передавать в конструктор только id объекта(о), и уже в конструкторе инициализировать все свойства из БД, или
2. в объекте(к) выполнять один запрос к БД, получать все свойства для всех объектов(о) и в цикле передавать в конструктор(о) сразу все данные, необходимые для создания(о).

первый способ мне не нравится тем, что надо выполнять много запросов к БД, такое будет тормозить.
второй способ получше, но если много свойств, то у конструктора будет очень много параметров (в моём случае получилось 37), как-то неаккуратно получается.

В поиске искал, нашел 2 большие темы с подобными вопросами, там много написано, но так и не пришли к однозначному решению.
http://phpclub.ru/talk/showthread.php?s=&threadid=95505&highlight=%E8%ED%E8%F6%E8%E0%EB%E8%E7%E0%F6%E8%2A+%E7%E0%EF%F0%EE%F1
http://phpclub.ru/talk/showthread.php?s=&threadid=78462&highlight=%E8%ED%E8%F6%E8%E0%EB%E8%E7%E0%F6%E8%2A+%E7%E0%EF%F0%EE%F1
Если у кого были подобные задачи, поделитесь опытом.
 

Alexandre

PHPПенсионер
способ 3 - сделать один запрос к БД,
далее пройтись итератором по ресулту, и сгенерировать массив объектов. PDO катит как никогда.
 

syfisher

TDD infected!!
Введи в свои классы метод importFromDbRecord($record) и пусть твои объекты реализую pull-подход.
 

alex77

Новичок
С использованием PDO получилось то что надо. Спасибо.

-~{}~ 02.08.07 09:46:

сравнил скорость работы pdo mysql и стандартных ф-ций для mysql,
pdo проигрывает в скорости :(
 
Alexandre
Так же как и не использовать :D. Платить приходится всегда.
 

alex77

Новичок
вначале я предположил, что fetchAll будет побыстрее цикла на php, но на практике оказалось даже немного медленнее
 
Сверху