当前位置:首页 > PHP

php oop实现分页

2026-02-15 12:03:08PHP

PHP OOP 实现分页

分页是Web开发中常见的功能,使用面向对象编程(OOP)可以更好地组织代码。以下是实现分页的步骤:

创建分页类

定义一个 Pagination 类,包含分页逻辑的核心方法:

class Pagination {
    private $totalItems;
    private $itemsPerPage;
    private $currentPage;
    private $totalPages;
    private $maxPagesToShow = 5;

    public function __construct($totalItems, $itemsPerPage, $currentPage) {
        $this->totalItems = $totalItems;
        $this->itemsPerPage = $itemsPerPage;
        $this->currentPage = $currentPage;
        $this->calculateTotalPages();
    }

    private function calculateTotalPages() {
        $this->totalPages = ceil($this->totalItems / $this->itemsPerPage);
    }

    public function getOffset() {
        return ($this->currentPage - 1) * $this->itemsPerPage;
    }

    public function getPages() {
        $pages = [];
        $half = floor($this->maxPagesToShow / 2);

        $startPage = max(1, $this->currentPage - $half);
        $endPage = min($this->totalPages, $startPage + $this->maxPagesToShow - 1);

        if ($endPage - $startPage + 1 < $this->maxPagesToShow) {
            $startPage = max(1, $endPage - $this->maxPagesToShow + 1);
        }

        for ($i = $startPage; $i <= $endPage; $i++) {
            $pages[] = $i;
        }

        return $pages;
    }

    public function getCurrentPage() {
        return $this->currentPage;
    }

    public function getTotalPages() {
        return $this->totalPages;
    }
}

使用分页类

在控制器或业务逻辑中实例化并使用分页类:

$totalItems = 100; // 从数据库获取总记录数
$itemsPerPage = 10;
$currentPage = isset($_GET['page']) ? (int)$_GET['page'] : 1;

$pagination = new Pagination($totalItems, $itemsPerPage, $currentPage);
$offset = $pagination->getOffset();

// 使用 $offset 和 $itemsPerPage 查询数据库
// $sql = "SELECT * FROM table LIMIT $offset, $itemsPerPage";

渲染分页链接

在视图中渲染分页导航:

$pages = $pagination->getPages();
$currentPage = $pagination->getCurrentPage();
$totalPages = $pagination->getTotalPages();

echo '<div class="pagination">';
if ($currentPage > 1) {
    echo '<a href="?page=' . ($currentPage - 1) . '">Previous</a>';
}

foreach ($pages as $page) {
    $active = $page == $currentPage ? 'active' : '';
    echo '<a href="?page=' . $page . '" class="' . $active . '">' . $page . '</a>';
}

if ($currentPage < $totalPages) {
    echo '<a href="?page=' . ($currentPage + 1) . '">Next</a>';
}
echo '</div>';

数据库查询示例

结合分页类实现数据库查询:

class Database {
    public function getPaginatedData($table, $offset, $limit) {
        // 使用 PDO 或其他数据库驱动
        $stmt = $pdo->prepare("SELECT * FROM $table LIMIT :offset, :limit");
        $stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
        $stmt->bindParam(':limit', $limit, PDO::PARAM_INT);
        $stmt->execute();
        return $stmt->fetchAll();
    }
}

$db = new Database();
$data = $db->getPaginatedData('users', $offset, $itemsPerPage);

分页样式

添加CSS样式美化分页导航:

php oop实现分页

.pagination {
    display: flex;
    gap: 5px;
    margin-top: 20px;
}
.pagination a {
    padding: 8px 12px;
    border: 1px solid #ddd;
    text-decoration: none;
}
.pagination a.active {
    background-color: #007bff;
    color: white;
}

通过以上步骤,可以实现一个灵活且可复用的OOP分页功能。根据实际需求,可以进一步扩展分页类,例如添加URL生成、自定义样式等功能。

标签: 分页php
分享给朋友:

相关文章

php 实现自动收货

php 实现自动收货

PHP 实现自动收货功能 自动收货功能通常用于电商系统,在订单超过一定时间未手动确认收货时自动完成订单。以下是实现方法: 数据库设计 需要订单表包含以下关键字段: CREATE TABLE…

php验证码的实现

php验证码的实现

PHP 验证码实现方法 使用 GD 库生成基础验证码 创建画布并生成随机字符串作为验证码内容: session_start(); $width = 120; $height = 40; $image…

php 实现排序

php 实现排序

PHP 实现数组排序的方法 PHP 提供了多种内置函数和方法来实现数组排序,适用于不同的排序需求。以下是一些常见的排序实现方式: 使用 sort() 函数对数组进行升序排序 sort() 函数对数组…

php 实现单链表

php 实现单链表

单链表的基本概念 单链表是一种线性数据结构,由节点组成,每个节点包含数据域和指向下一个节点的指针域。链表的头节点是访问整个链表的入口。 单链表的节点类实现 在PHP中,可以通过类来定义链表节…

php实现登陆

php实现登陆

PHP 实现登录功能 创建登录表单 在 HTML 文件中创建一个登录表单,包含用户名和密码输入框,表单的 action 属性指向处理登录的 PHP 文件。 <form action="logi…

php 实现面包屑导航

php 实现面包屑导航

实现面包屑导航的方法 面包屑导航(Breadcrumb Navigation)是一种常见的网站导航方式,用于显示用户当前页面的路径。以下是几种在 PHP 中实现面包屑导航的方法。 基于 URL 路径…