PHPによるページングでのパッケージ化と呼出方法
PHPでは、以下の手法でページング機能をカプセル化して利用できます。
- ページングカプセル化手法
- ページネーションに必要な各種のプロパティやメソッドを格納するPaginationというクラスを作成します。
- current_page や page_size、total_records などといったプロパティをクラス内に定義する。
- ページングの初期値を設定する初期化メソッドを実装してください。
- 総件数と1ページあたりに表示する件数を受け取り、総ページ数を計算するメソッドを実装する。
- 現在のページ、総ページ、ページングリンクのフォーマットに従ってページングリンクを生成するメソッドを実装する
- ページング呼び出しメソッド:
- パッケージ化したページングクラスファイルをインポートする。
- ページングオブジェクトを作成し、初期メソッドを呼び出してページングの初期値を設定します。
- データベースから総レコード数を取得し、総ページ数を計算するメソッドを呼び出して、総ページ数を計算します。
- 現在のページ番号とページの合計数に基づき、ページネーションリンクを作成するメソッドを呼び出してページネーションリンクを作成します。
- 現在のページ番号とページ当たりの表示件数に基づいて、データベースから現在のページのデータを取得します。
PHPでページ分割処理を簡便に行うサンプルコードを以下に示します。
// Pagination.php
class Pagination {
private $currentPage;
private $perPage;
private $totalRecords;
public function init($currentPage, $perPage, $totalRecords) {
$this->currentPage = $currentPage;
$this->perPage = $perPage;
$this->totalRecords = $totalRecords;
}
public function getTotalPages() {
return ceil($this->totalRecords / $this->perPage);
}
public function generateLinks($linkFormat) {
$totalPages = $this->getTotalPages();
$links = '';
for ($i = 1; $i <= $totalPages; $i++) {
$links .= sprintf($linkFormat, $i);
}
return $links;
}
}
// index.php
include 'Pagination.php';
// Create pagination object
$pagination = new Pagination();
// Initialize pagination
$pagination->init(1, 10, 100); // Assuming 10 records per page and 100 total records
// Generate pagination links
$linkFormat = '<a href="?page=%d">%d</a> ';
$links = $pagination->generateLinks($linkFormat);
// Query database and display current page's data
$currentPage = $pagination->getCurrentPage();
$perPage = $pagination->getPerPage();
$offset = ($currentPage - 1) * $perPage;
$query = "SELECT * FROM table LIMIT $offset, $perPage";
// Execute the query and display the data
// ...
上記サンプルでは、Paginationクラスはページングに関する属性とメソッドをカプセル化している。index.phpファイルでは、最初にPagination.phpファイルをインポートし、Paginationオブジェクトを作成してinitメソッドでページングの初期値を初期化する。次に、generateLinksメソッドを呼び出してページングリンクを生成し、$linkFormatパラメータを使用してリンクの書式を指定する。最後に、現在のページ番号と1ページに表示する数に応じて、対応するクエリステートメントを実行して現在のページのデータを取得する。