1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<?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;
}
}
}
?>