Вау. А кого ты листать собираешься-то, если не модель?я бы не стал делать вообще никакой зависимости между моделью и классом пагинации
Вау. А кого ты листать собираешься-то, если не модель?я бы не стал делать вообще никакой зависимости между моделью и классом пагинации
protected function _loadListing() {
$this->_limit = Pager::getNumPerPage(Pager::MAIN);
$this->_offset = Pager::getOffset($this->_pageNum, $this->_limit);
$search = Service::instance('search')->applyFilters($this->_filterValues)
->exec($this->_limit, $this->_offset);
if ($this->_total = $search->getTotalCount()) {
$_idList = $search->getResultIdList();
$_idSet = implode(',', $_idList);
$this->_listing = Model::factory('website')
->where('id', 'IN', $_idList)
->order_by(DB::expr("FIND_IN_SET(id, '{$_idSet}')"))
->find_all();
$this->_pager = Pager::factory(Pager::MAIN, $this->_pageNum, $this->_total);
}
}
если это не SQL то что?$pages = ORM::factory('page')->where('language', '=', $this->language)->order_by('added_at','DESC');
А эти числа надо откуда-то брать.тулзу, которая, по большому счету, интерпретирует одно число в два других?
$pages = ORM::factory('page')->where('language', '=', $this->language)->order_by('added_at','DESC')->withHiddenCount();
$total_count = ORM::factory('page')->getLastHiddenCount();
Ага, тонны кода просто =)lagoff
ага, а сейчас ещё всё засунуть в пейджинг и в итоге вместо $model->fetchWithPager($from, $perPage); будем клепать каждый раз кучу действий, зато без связанности.
$repository = ORM::factory('page')->where(...);
$p = Pager::factory()->setOptions(array('setsize' => $repository->getCount(), 'pagesize' => 50))->setCurrentPage($_GET['page']);
$pages = $repository->order(...)->offsetLimit( $p->offset(), $p->limit() )->getObjects();
$p = Pager::factory()->setOptions(array('pagesize' => 50))->setCurrentPage($_GET['page']);
$pages = ORM::factory('page')->where(...)->order(...)->getObjectsWithPager($p);
в сравнении с одной строкой инкапсулирующей всю это логику. да - потенциал огромен, если платят за количество строк в коде.Хватит плодить сильносвязанные одноразовые пепелацы.
тогда уж один, раз счет пошел на штуки. У вас $model же не из воздуха появляется.два статик метода
Волшебные строки... И че? Грех? А по поводу параметров - возможно установки параметров вообще может не быть, если настройки одни и те же везде.волшебные строки в качестве параметров
Ну да. Как вариант. Пример без инъекции я привел тоже.затем инъекция пэйджинга в модель
Не вижу никаких противоречий заявленному.зачем тогда было заявлять
Инкапсулировать? Я бы назвал такой поход захардкодить в том месте где она потребовалась в частном случае.с одной строкой инкапсулирующей всю это логику
=))) Ну вы бы еще сказали, че-нить в духе "ООП ради ООП". Имхо в данном контексте аргумент слабый. Потом вот читаешь такой "экономный" код и один вопрос крутится: "Почему у слона хобот в ж..."если платят за количество строк в коде.
кстати, когда лень, то из воздуха. тупо эвалится новый класс отнаследованный от обстрактной реализации Db\Table.тогда уж один, раз счет пошел на штуки. У вас $model же не из воздуха появляется.
Это и есть связанность и многократное использование того, что можно связать, но реализовать в ОДНОМ месте для всех моделей. Твои реализации являются частными и программисту нужно помнить какие и в какой последовательности ингридиенты смешивать.Ну да. Как вариант. Пример без инъекции я привел тоже.
этот способ от ваших отличается лишь одним - он написан однажды и там где нужно. внутри тот же код с отдельным пэеджером и моделью.В общем-то, такой подход с зашиванием в "модель" тоже можно использовать, но только в ограниченном числе случаев.
нет, есть отдельный класс pager, просто он вызывается через геттор createPager, чтобы было удобнее расширять и тестировать. Этот объект передаётся в шаблон, где человек может как угодно оформлять вывод? пример есть вышеЗ.Ы. Интересно, а логика расчета видимого диапазона страниц у вас где находится? Тоже в модели?
собственно вы не привели ни одного аргумента почему такой подход не применим. А у меня железное - меньше писать кода, в разы. Одна строчка для вывода пэйджинга.Потом вот читаешь такой "экономный" код и один вопрос крутится: "Почему у слона хобот в ж..."
->setOptions(array('setsize' => $repository->getCount()
и
offsetLimit( $p->offset(), $p->limit() )
$FooModel = new FooModel(...);
$Pager = (new Pager($FooModel, $this->perPage))->loadPage($this->args->page);
$this->View->Foo->bind($Pager);
Ну, у меня то как раз точно такразве длинно?
он нахрен не нужен.что в моем эвале плохого?
да нуК суперглобалам нельзя так обращаться, насколько я знаю
~$ php -r '$r = "SERVER"; var_dump(${"_".$r});'
array(45) {
["LC_PAPER"]=>
string(11) "ru_RU.UTF-8"
["LC_ADDRESS"]=>
string(11) "ru_RU.UTF-8"
["LC_MONETARY"]=>
string(11) "ru_RU.UTF-8"
["TERM_PROGRAM"]=>
string(9) "iTerm.app"
......
$page = $this->getRequest()->getParam('page');
$count = $this->getRequest()->getParam('count', Zend_Paginator::getDefaultItemCountPerPage());
$songs = new Application_Model_Mapper_Songs;
$adapter = new Application_Model_Paginator($songs->getDbTable()
->select()
->where('trash = ?', false)
->order('id')
, $songs);
$paginator = new Zend_Paginator($adapter);
$paginator->setItemCountPerPage($count)
->setCurrentPageNumber($page);
$this->view->paginator = $paginator;