Форумы портала PHP.SU » PHP » Пользовательские функции » Пагинатор дубль 2

Страниц (1): [1]
 

1. teddy - 06 Ноября, 2014 - 18:22:16 - перейти к сообщению
Всем привет! На днях взялся за новый проект, где обязательным условием является его написание с нуля. Ввиду того, что обычно работаю на фреймворках и привык использовать готовые решения, отправился в гугл для поиска нормального класса-пагинатора, но устраивающий меня так и не нашел. Свой быдлокласс который я выкладывал сюда в начале этого года, меня так же не устроил Улыбка

Некоторые наработки у меня уже были, но нормального пагинатора под рукой не было. Поэтому решил написать сам, чем я и собираюсь с Вами поделиться.
Может в дальнейшем ещё великами поделюсь, если будет настроение. Этот самый простой, поэтому без особого выноса мозга смогу объяснить с чем его едят.

Итак, приступим. Собственно сам код загорает в спойлере.
ЗЫ: тут беда с форматированием кода, в файле который в приложении норм.
Спойлер (Отобразить)

У класса всего 6 методов, 5 из которых предназначены для клиентского кода.

Описание методов:
1. setCurrentPage - для установления номера текущей страницы
2. setRecordsCount - для установления общего количества записей
3. setMaxPageCount - для установления максимального количества страниц пагинатора
4. setPerPageLimit - для установления количества выводимых записей на одну страницу
5. getPages - для получения массива данных о страницах

Пример использования:
PHP:
скопировать код в буфер обмена
  1. $page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
  2.  
  3. $paginator = new Paginator();
  4. $pages = $paginator->setCurrentPage($page)
  5.                              ->setRecordsCount(200)
  6.                              ->setPerPageLimit(10)
  7.                              ->setMaxPageCount(5)
  8.                              ->getPages();


Если Вы все сделали правильно, то в $pages будет приблизительно такой массив:
Спойлер (Отобразить)

Если к примеру Вы переключитесь на вторую страничку, то в массиве появится дополнительный ключ 'prev' и значение(число) предыдущей странички.
Так же если нет страничек(высчитывается на основе переданных данных) "вперед", то ключа next в массиве так же не будет.

Ну и наконец пример вывода.

Спойлер (Отобразить)


Думаю ничего не забыл, файл с классом в приложении.

 

Powered by ExBB FM 1.0 RC1