|
|
<?php
|
|
|
/**
|
|
|
* 分页基类
|
|
|
*
|
|
|
* example:
|
|
|
* <pre>
|
|
|
* use Hood\Paging;
|
|
|
* $paging = new Paging();
|
|
|
* $paging->setTotal(10)->setCursor(1);
|
|
|
* </pre>
|
|
|
*
|
|
|
* @name Paging
|
|
|
* @version 2.0 (2009-5-11 下午05:47:31)
|
|
|
* @author ZIP
|
|
|
* @since 1.0
|
|
|
*/
|
|
|
namespace Hood;
|
|
|
class Paging {
|
|
|
|
|
|
/**
|
|
|
* 总分页数
|
|
|
*
|
|
|
* @var Integer
|
|
|
*/
|
|
|
private $total;
|
|
|
|
|
|
/**
|
|
|
* 每页记录数
|
|
|
*
|
|
|
* @var Integer
|
|
|
*/
|
|
|
private $size;
|
|
|
|
|
|
/**
|
|
|
* 当前页
|
|
|
* @var Integer
|
|
|
*/
|
|
|
protected $currentPage = 1;
|
|
|
|
|
|
/**
|
|
|
* 光标
|
|
|
*
|
|
|
* @var Integer
|
|
|
*/
|
|
|
private $cursor = 0;
|
|
|
|
|
|
/**
|
|
|
* 当前页
|
|
|
* @return Integer
|
|
|
*/
|
|
|
public function getCurrent() {
|
|
|
return $this->currentPage;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 设置当前页
|
|
|
* @param Integer $pageNo
|
|
|
* @return Paging
|
|
|
*/
|
|
|
public function setCurrent( $pageNo ) {
|
|
|
$cur = (int) intval($pageNo);
|
|
|
if ($cur <= 0) {
|
|
|
$cur = 1;
|
|
|
}
|
|
|
$this->currentPage = $cur;
|
|
|
return $this;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 下一页
|
|
|
* @return Integer
|
|
|
*/
|
|
|
public function getNext() {
|
|
|
$pageNum = $this->getPageNum();
|
|
|
$current = $this->getCurrent();
|
|
|
return $current < $pageNum ? ($current + 1) : $pageNum;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 上一页
|
|
|
* @return Integer
|
|
|
*/
|
|
|
public function getPrev() {
|
|
|
$current = $this->getCurrent();
|
|
|
return $current > 1 ? ($current - 1) : 1;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 取得记录开始的偏移量
|
|
|
* @return Integer
|
|
|
*/
|
|
|
public function getOffset() {
|
|
|
$offset = $this->getSize() * abs($this->getCurrent() - 1);
|
|
|
if ($offset >= $this->getTotal()) {
|
|
|
$offset = 0;
|
|
|
if ($this->getTotal() > 0 && $this->getTotal() > $this->getSize()) {
|
|
|
$offset = $this->getSize() * abs($this->getPageNum() - 1);
|
|
|
}
|
|
|
}
|
|
|
return (int) abs($offset);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 设置总记录数
|
|
|
*
|
|
|
* @param Integer $total
|
|
|
* @return Paging
|
|
|
*/
|
|
|
public function setTotal( $total ) {
|
|
|
$this->total = (int) intval($total);
|
|
|
return $this;
|
|
|
}
|
|
|
/**
|
|
|
* 获取总数
|
|
|
* @return Integer
|
|
|
*/
|
|
|
public function getTotal() {
|
|
|
return (int) intval($this->total);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取每页显示数
|
|
|
* @return Integer
|
|
|
*/
|
|
|
public function getSize() {
|
|
|
return (int) intval($this->size);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 设置每页记录数
|
|
|
*
|
|
|
* @param Integer $size
|
|
|
* @return Paging
|
|
|
*/
|
|
|
public function setSize( $size ) {
|
|
|
if ($size > 0) {
|
|
|
$this->size = (int) intval($size);
|
|
|
}
|
|
|
return $this;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取起始数
|
|
|
* @return Integer
|
|
|
**/
|
|
|
public function getStarting() {
|
|
|
return $this->getOffset();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取终点数
|
|
|
* @return Integer
|
|
|
**/
|
|
|
public function getEnding() {
|
|
|
return $this->getOffset() + $this->getSize();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 光标
|
|
|
*
|
|
|
* @return Integer
|
|
|
*/
|
|
|
public function getCursor() {
|
|
|
return $this->cursor;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 设置光标
|
|
|
*
|
|
|
* @param Integer $cursor
|
|
|
* @return Paging
|
|
|
*/
|
|
|
public function setCursor( $cursor ) {
|
|
|
$this->cursor = intval($cursor);
|
|
|
return $this;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 取得总分页数
|
|
|
*
|
|
|
* @return Integer
|
|
|
*/
|
|
|
public function getPageNum() {
|
|
|
if ($this->getSize() == 0) {
|
|
|
return 0;
|
|
|
}
|
|
|
return ceil($this->getTotal() / $this->getSize());
|
|
|
}
|
|
|
} |
|
|
\ No newline at end of file |
...
|
...
|
|