Authored by ziy

添加Paging

<?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
... ...