創建一個高效的PHP分頁類需要考慮幾個關鍵因素,包括性能優化、代碼的可維護性和可擴展性。以下是一個簡單的PHP分頁類示例,它包括了基本的分頁功能和性能優化的一些建議。
class Pagination {
private $itemsPerPage;
private $currentPage;
private $totalItems;
private $totalPages;
private $url;
public function __construct($itemsPerPage, $currentPage = 1, $totalItems = 0, $url = '') {
$this->itemsPerPage = (int)$itemsPerPage;
$this->currentPage = (int)$currentPage;
$this->totalItems = (int)$totalItems;
$this->url = $url;
$this->totalPages = ceil($this->totalItems / $this->itemsPerPage);
}
public function getTotalPages() {
return $this->totalPages;
}
public function getCurrentPage() {
return $this->currentPage;
}
public function getItemsPerPage() {
return $this->itemsPerPage;
}
public function getTotalItems() {
return $this->totalItems;
}
public function getUrl($page = null) {
if ($page === null) {
$page = $this->currentPage;
}
$queryParams = [];
if ($page > 1) {
$queryParams['page'] = $page;
}
$queryString = http_build_query($queryParams);
return $this->url . '?' . $queryString;
}
public function getPaginationLinks() {
$links = [];
for ($i = 1; $i <= $this->totalPages; $i++) {
$links[] = [
'url' => $this->getUrl($i),
'text' => $i,
'active' => $i == $this->currentPage
];
}
return $links;
}
}
使用這個類的示例:
// 假設我們有一個數據庫查詢結果
$items = [
// ... 從數據庫獲取的數據項
];
$totalItems = count($items);
// 創建分頁對象
$pagination = new Pagination(10, 1, $totalItems);
// 獲取分頁鏈接
$paginationLinks = $pagination->getPaginationLinks();
// 輸出分頁鏈接
foreach ($paginationLinks as $link) {
echo '<a href="' . $link['url'] . '">' . $link['text'] . '</a>';
}
性能優化建議:
page
)有索引,以提高查詢效率。請注意,這個示例是一個非常基礎的實現,實際應用中可能需要根據具體需求進行調整和擴展。例如,你可能需要添加錯誤處理、支持自定義模板、國際化等功能。