当前位置:首页 > PHP

php oop实现分页

2026-02-15 12:03:08PHP

PHP OOP 实现分页

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

创建分页类

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

php oop实现分页

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";

渲染分页链接

在视图中渲染分页导航:

php oop实现分页

$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样式美化分页导航:

.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实现文件下载 使用PHP实现文件下载可以通过设置HTTP头部信息强制浏览器下载文件而非直接打开。以下是几种常见的方法: 方法一:直接输出文件内容 $file_path = 'path/to/…

php实现定时

php实现定时

PHP 实现定时任务的方法 PHP 本身是脚本语言,通常需要借助外部工具或框架实现定时任务。以下是几种常见方法: 使用 Cron 任务 Linux 系统自带的 Cron 是常用的定时任务工具。通过编…

php 实现面包屑导航

php 实现面包屑导航

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

php https实现

php https实现

PHP 中实现 HTTPS 的方法 在 PHP 中实现 HTTPS 主要通过配置服务器和编写代码来确保通信的安全性。以下是几种常见的方法: 配置服务器支持 HTTPS 确保服务器已安装 SSL/T…

php 实现链表

php 实现链表

PHP 实现链表的方法 链表是一种线性数据结构,由节点组成,每个节点包含数据和指向下一个节点的指针。PHP 中可以通过类和对象来实现链表。 定义链表节点类 创建一个 ListNode 类,用于表示链…

php session 实现购物车

php session 实现购物车

PHP Session 实现购物车的方法 初始化 Session 在 PHP 脚本的最开始调用 session_start() 函数,确保会话已启用。这通常在页面的顶部完成。 session_sta…