Есть ли возможность Выложить Документацию по Varien???
(разбирать на запчасти все классы неохота)
В первую очередь интересует работа Collection прикрученная к определенной модели (в MVC).
Метод подтягивания в коллекцию данних из других таблиц, посредством связей.
ZF документация конечно спасает, но каждый программист хочет знать, написано ли это до него?
Нормальная документация даже на английском устроит
Если не вдаваться в подробности, то документации нет
Коллекция Varien_Data_Collection - это объект-итератор, а также ресурс-модель. С ним можно обращаться почти как с массивом, в частности можно посчитать количество элементов функцией count() или обойти в цикле foreach. В классе предусмотрены прочие методы для обработки данных - к примеру, разбиение набора данных на страницы, установка фильтров, трансформация в ассоциативный массив и т.д.
Данные в коллекцию могут поступать разными способами. Например, прочитать несколько строк из БД или прочитать содержимое папки - получить список файлов.
Varien_Data_Collection_Db, наследующая Varien_Data_Collection - как раз способна загружать данные из БД. У нее есть атрибут _select - это объект Zend_Db_Select.
Таким образом, чтобы прочитать что-то из БД, необходимо создать объект коллекции, вызвать у него объект select и составить запрос, как описано в документации Zend Framework.
Какой смысл в коллекции, если я могу тупо составить запрос, скормить его открытому соединению и получить массив данных?
Я вижу несколько причин:
1) коллекцию можно отнаследовать и понаписывать кучу готовых методов, которые будут повторно использоваться в разных местах. Это и происходит в Мадженто повсеместно.
2) по той же причине, у коллекции будет стандартный интерфейс, который тоже можно использовать в разных местах и ни о чем не задумываться
3) самое интересное. Varien_Data_Collection_Db не будет делать запрос к БД до тех пор, пока не будет вызван метод load(). Этот метод автоматически (1 раз) вызывается при вызове count() или при обходе в цикле foreach. Таким образом, данные подгружаются только непосредственно когда нам надо.