当前位置:首页 > 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实现分页的基本方法 使用原生PHP实现分页功能需要结合数据库查询和HTML展示。以下是核心实现步骤: 数据库查询与分页逻辑 // 连接数据库 $conn = new mysqli('loca…

php实现搜索功能

php实现搜索功能

实现基础搜索功能 使用PHP和MySQL实现基础的搜索功能需要结合表单提交与数据库查询。创建一个HTML表单用于接收用户输入的搜索关键词,通过PHP处理表单数据并查询数据库。 // 搜索表单 (HT…

vue  实现分页

vue 实现分页

实现分页功能 在Vue中实现分页功能通常需要结合后端API或前端数据处理。以下是两种常见的实现方式: 前端分页实现 适用于数据量较小的情况,所有数据一次性加载到前端后进行分页处理: <tem…

php实现验证码

php实现验证码

PHP实现验证码的方法 使用GD库生成验证码 GD库是PHP中处理图像的扩展,可用于生成验证码图片。 <?php session_start(); $width = 120; $height…

php实现websocket

php实现websocket

PHP 实现 WebSocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。PHP 可以通过多种方式实现 WebSocket 功能,以下是几种常见的方法: 使用 Ratc…

vue实现页面分页

vue实现页面分页

Vue实现页面分页的方法 使用Element UI的分页组件 Element UI提供了现成的分页组件el-pagination,适合快速集成。以下是一个示例代码: <template>…