Пагинатор

Оглавление

1. Введение
2. Список методов
3. Примеры использования



Введение #
К оглавлению

Для организации постраничной навигации в фреймворке имеется сервис Paginator. Он высчитывает значения LIMIT и OFFSET для запроса, а так же генерирует меню постраничной навигации.


Инициализировать сервис можно так:
1
2
3

    $paginator 
ABC::newService(ABC::PAGINATOR);





Сервис предоставляет следующие публичные методы #
К оглавлению

1 setNums() Устанавливает значения для пагинации
2 getLimit() Возвращает количество рядов
3 getOffset() Возвращает текущий сдвиг
4 createMenu() Генерирует меню навигации


setNums() public method
К списку методов

Устанавливает значения для пагинации.

Метод принимает и устанавливает значения текущей страницы, а также количество рядов на странице и количество колонок при выводе записей «плиткой»

public Paginator::setNums ( $page 1, $rows 1, $columns 1 )
$page int Номер текущей страницы.
$rows int Количество рядов на странице
$columns int Количество колонок при выводе «плиткой»
return void


getLimit() public method
К списку методов

Возвращает количество рядов.

Рассчитывает и возвращает количество отображаемых рядов, в зависимости от настроек.

public Paginator::getLimit ( )
return int Число рядов отображения


getOffset() public method
К списку методов

Возвращает текущий сдвиг.

Рассчитывает и возвращает сдвиг рядов, в зависимости от настроек и текущей страницы.

public Paginator::getOffset ( $count )
$count int Общее количество записей в таблице.
return int Число рядов сдвига


createMenu() public method
К списку методов

Генерирует меню навигации.

Возвращает меню постраничной навигации согласно рассчитанным параметрам.

public Paginator::createMenu ( $uri, $param 'num' )
$uri string URI для меню постраничной навигации, куда будет добавлены параметры с номерами страниц.
$param string Имя GET-параметра, который содержит номер текущей страницы.
return string Меню навигации.



Пример использования #
К оглавлению

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

        $pdo 
ABC::sharedService(ABC::PDO);   
    
// Получаем общее количество строк в таблице   
        
$stmt $pdo->query("SELECT COUNT(`id`) AS `cnt` FROM `table`");     
        
$cnt $stmt->fetchColumn();   
    
// Вызываем сервис пагинатора   
        
$paginator ABC::newService(ABC::PAGINATOR);   
    
// Устанавливаем номер текущей страницы, а также количество записей на странице   
        
$num GET('num');   
        
$amount 5;   
    
// Передаем значения в пагинатор       
        
$paginator->setNums($num$amount);      
    
// Получаем лимит и офсет для запроса   
        
$limit  $paginator->getLimit();  
        
$offset $paginator->getOffset($cnt);
    
// Меню постраничной навигации     
        
$menu $paginator->createMenu('/page''num'); 
    
// Выполняем запрос с полученным лимитом и сдвигом   
        
$stmt $pdo->query("SELECT * FROM `table` 
                              LIMIT "
$limit .' OFFSET '$offset);