首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

Zend Framework 自定義分頁類實現與擴展實戰

     編輯:PHP 綜合知識

方案來源

參考社區方案改進擴展:原文鏈接

文件結構截圖

實現步驟

在 library/ 下創建 Custom 模塊,核心文件 Custom/Db/Adapter/Pdo/Mysql.php:

<?php
require_once 'Zend/Db/Adapter/Pdo/Mysql.php';

class Custom_Db_Adapter_Pdo_Mysql extends Zend_Db_Adapter_Pdo_Mysql
{
    public function fetchPage($sql, $pageSize = 20, $currentPage = 1)
    {
        $currentPage = is_numeric($currentPage) ? $currentPage : 1;
        $result = array();

        // 獲取總記錄數
        $resultArray = $this->query($sql);
        $result['count'] = count($resultArray->fetchAll());

        // 計算總頁數
        $result['pageCount'] = $result['count'] / $pageSize > 1 
            ? ceil($result['count'] / $pageSize) : 1;

        // 計算偏移量
        $offset = ($currentPage - 1) * $pageSize;
        $result['currentPage'] = $currentPage;
        $result['firstPage'] = 1;
        $result['lastPage'] = $result['pageCount'];

        // 追加 LIMIT 子句
        $sql .= ' ' . $this->select()->limit($pageSize, $offset)->__toString();

        // 獲取分頁數據
        $result['table'] = $this->query($sql)->fetchAll();

        return $result;
    }
}

使用方式

  1. 註冊自定義適配器前綴
  2. 配置 resources.db.adapter = "Custom_Db_Adapter_Pdo_Mysql"
  3. 在 Model 或 Controller 中調用 $db->fetchPage($sql, 20, $page)

返回數據結構

array(
    'count'      => 總記錄數,
    'pageCount'  => 總頁數,
    'currentPage'=> 當前頁碼,
    'firstPage'  => 1,
    'lastPage'   => 最後頁碼,
    'table'      => 當前頁數據集合
)

該方案繼承官方 MySQL 適配器,零侵入擴展分頁能力,適合 ZF 1.x 項目快速集成。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved