A
A
Anton R.2019-09-25 23:38:17
OOP
Anton R., 2019-09-25 23:38:17

Paginator class, what else should be able to do?

I wrote a simple Paginator class for (oddly enough) pagination when displaying a large list of elements (articles, ads, etc.), what other functionality can be added to it besides displaying a list of links? Or all the same "one class - one action"?

<?php

include 'db/db.php';

// Функции которые выполняет Пагинатор:
// - Определяет общее количество элементов каталога в выборке.
// - Определяет сколько элементов на странице каталога выводить.
// - Передает кол-во элементов на странице каталога (число) в запросы в БД при выводе списка статей и в Вычислитель количества страниц.
// - Вычисляет количество страниц каталога (и ссылок на них): общее кол-во элементов разделить на кол-во элементов на одной странице.

class Paginator {
  public $totalElementsCount;
  public $ElementsPerPage;
  
  public function __construct($pdo, $ElementsPerPage = 3){
    $sql = "SELECT * FROM pages";
    $result = $pdo->query($sql);
    $totalCount = $result->rowCount();
    $this->totalElementsCount = $totalCount;
    
    $this->ElementsPerPage = $ElementsPerPage;
  }
  
  public function pagesAndLinksCalculator(){
    $numofpages = ceil($this->totalElementsCount / $this->ElementsPerPage);
    $i = 1;
    while($i <= $numofpages)
      {
        $pagelinks[] = $i;
        $i++;
      }
    return $pagelinks;
  }
  
}

$paginator = new Paginator($pdo); // Второй аргумент не указываю, по умолчанию - 3 элемента на странице.
$totalElements = $paginator->totalElementsCount;
$pagelinks = $paginator->pagesAndLinksCalculator();

?>

<html>
  <?php echo "Всего статей: " . $totalElements; ?>
  <h1>Страницы:</h1>
  <?php foreach($pagelinks as $pagelink): ?>
  <a href="?page=<?php echo $pagelink ?>"><?php echo $pagelink ?></a>
  <?php endforeach;?>
</html>

5d8bcfd600673650510441.png

Answer the question

In order to leave comments, you need to log in

1 answer(s)
K
Kirill Nesmeyanov, 2019-09-26
@anton_reut

For starters, this is not a paginator, but a cursor: https://ru.wikipedia.org/wiki/%D0%9A%D1%83%D1%80%D...
The task of the paginator is to get an arbitrary iterator and divide it by chunks, and not to climb into the database.
PS An example of a relatively (because of redundant coupling) normally implemented paginator: https://github.com/illuminate/pagination

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question