Posting in the Magento forums has been disabled pending the implementation of a new and improved forum solution which should better serve the community.

For new questions please post at magento.stackexchange.com, the community-run support site for the Magento community. We will be providing updates on the new forum solution soon. For questions or concerns please email community@magento.com.

Magento Forum

Документация по Varien
 
BeClient
Member
 
Avatar
Total Posts:  47
Joined:  2008-06-12
Kiev, Ukraine
 

Есть ли возможность Выложить Документацию по Varien???
(разбирать на запчасти все классы неохота)
В первую очередь интересует работа Collection прикрученная к определенной модели (в MVC).
Метод подтягивания в коллекцию данних из других таблиц, посредством связей.

ZF документация конечно спасает, но каждый программист хочет знать, написано ли это до него?

Нормальная документация даже на английском устроит

 
Magento Community Magento Community
Magento Community
Magento Community
 
Anton Makarenko
Magento Team
 
Avatar
Total Posts:  184
Joined:  2008-05-13
Los Angeles, CA
 

Если не вдаваться в подробности, то документации нет smile

Коллекция 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. Таким образом, данные подгружаются только непосредственно когда нам надо.

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top