<?php /** * PageUtil * ページの区切りを処理するためのクラス。 * ページ番号は1からはじめる。 * $Id: PageUtil.inc,v 1.1 2015/10/08 11:18:56 wanggb Exp $ * @author iimuro * @access public * @package jp.aimslib2.util */ class PageUtil { /** * オリジナルのデータ */ public $data; /** * 指定した大きさにチャンクされたデータ。 */ public $page_list; /** * 現在指定のページ。 */ public $page_now; public function __construct($data, $item_per_page, $page_now = 1) { if ($item_per_page < 1) { $item_per_page = count($data); } $this->data = $data; $this->page_list = array_chunk($data, $item_per_page); $this->page_now = $page_now; } /** * 指定したページのアイテムを返します。 * 指定しなかった場合、初期に設定した値が使われます。 * @param int ページ番号。1からはじまる。 */ public function getList($page_now = null) { if ($page_now == null) { $page_now = $this->page_now; } if ($page_now > count($this->page_list)) { $page_now = count($this->page_list); } if ($page_now < 1) { $page_now = 1; } if (count($this->page_list) > 0) { return $this->page_list[$page_now - 1]; } else { return array(); } } /** * 次のページがあるかを返します。 * @return boolean ある場合true。 */ public function hasNext() { if ($this->page_now + 1 > count($this->page_list)) { return false; } else { return true; } } /** * 前のページがあるかを返します。 * @return boolean ある場合true。 */ public function hasPrev() { if ($this->page_now < 2) { return false; } else { return true; } } /** * 次のページの番号を返します。 * @return int 次のページの番号。 */ public function getNextNum() { if ($this->page_now + 1 > count($this->page_list)) { return $this->page_now; } else { return $this->page_now + 1; } } /** * 前のページの番号を返します。 * @return int 前のページの番号。 */ public function getPrevNum() { if ($this->page_now < 2) { return 1; } else { return $this->page_now - 1; } } /** * 最大ページ数を返します。 * @return int 最大ページ番号。 */ public function getMaxPage() { return count($this->page_list); } /** * 最小ページ数を返します。有効な値がある場合は値は常に1になります。 * @return int 最小ページ番号。 */ public function getMinPage() { if (count($this->page_list) > 0) { return 1; } else { return 0; } } } ?>