当前位置:首页 > 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
分享给朋友:

相关文章

vue  实现分页

vue 实现分页

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

php 登录实现

php 登录实现

PHP 登录实现 PHP 登录功能通常包括用户认证、会话管理和安全性措施。以下是实现 PHP 登录功能的关键步骤。 数据库准备 创建一个用户表存储用户信息,通常包括用户名、密码(加密存储)和其他必…

php 实现接口

php 实现接口

PHP 实现接口的方法 在 PHP 中,接口(Interface)用于定义一组方法的规范,而不包含具体的实现。类可以实现(implement)接口,并必须实现接口中定义的所有方法。 定义接口 接口通…

php验证码的实现

php验证码的实现

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

vue实现分页条数

vue实现分页条数

Vue 实现分页条数控制 在 Vue 中实现分页条数控制通常需要结合分页组件和后端 API 支持。以下是几种常见的实现方式: 使用 Element UI 的分页组件 Element UI 提供了强大…

vue 分页的实现

vue 分页的实现

分页组件实现 使用Vue实现分页功能通常需要结合后端API和前端组件。以下是一种常见的实现方式: 模板部分 <template> <div class="pagina…