PHP分页类

class Paging
{
//记录的总条数
protected $total;
//每一页的条数
protected $pageSize;
//当前页
protected $page;
//页码的参数名字
protected $pageName;
//总页数
protected $pageCount;
//基本URL
protected $url;

/**

  • [__construct description]
  • @param [type] $total [总页数]
  • @param integer $pageSize [每一页的条数]
  • @param string $pageName [页码参数的名字]
    */
    public function __construct($total, $pageSize=5, $pageName='page')
    {
    $this->total = $total;
    $this->pageSize = $pageSize;
    $this->pageCount = ceil($total / $pageSize);
    $this->pageName = $pageName;
    $this->url = $this->getUrl();
    $this->page = $this->getPage();
    }

public function headPage()
{
return $this->setUrl(1);
}

public function prevPage()
{
if ($this->page < 2) {
$page = 1;
} else {
$page = $this->page - 1;
}
return $this->setUrl($page);
}

public function nextPage()
{
if ($this->page < $this->pageCount) {
$page = $this->page + 1;
} else {
$page = $this->pageCount;
}
return $this->setUrl($page);
}

public function tailPage()
{
return $this->setUrl($this->pageCount);
}

public function givenPage($page)
{
if ($page < 1) {
$page = 1;
} else if ($page > $this->pageCount) {
$page = $this->pageCount;
}
return $this->setUrl($page);
}

public function listed()
{
return [
'head'
=>
$this->headPage(),
'prev'
=>
$this->prevPage(),
'next'
=>
$this->nextPage(),
'tail'
=>
$this->tailPage()
];
}

protected function getPage()
{
//我们约定,确定页码的参数默认是page
if (empty($_GET[$this->pageName])) {
return 1;
}
$page = (int)$_GET[$this->pageName];
if ($page < 1) {
$page = 1;
} else if ($page > $this->pageCount) {
$page = $this->pageCount;
}
return $page;
}

protected function getUrl()
{
//获取协议
$url = $_SERVER['REQUEST_SCHEME'] . '😕/';
//拼接主机
$url .= $_SERVER['HTTP_HOST'];
//拼接端口
$url .= ':' . $_SERVER['SERVER_PORT'];
//拼接URI
$requestUri = $_SERVER['REQUEST_URI'];
if (isset($_GET[$this->pageName])) {
$replaceStr = $this->pageName . '=' . $_GET[$this->pageName];
$replaceArr = [
$replaceStr.'&',
'&'.$replaceStr,
'?'.$replaceStr
];
$requestUri = str_replace($replaceArr, '', $requestUri);
}
return $url . $requestUri;
}

protected function setUrl($page)
{
if (strpos($this->url, '?')) {
return $this->url . '&' . $this->pageName . '=' . $page;
} else {
return $this->url . '?' . $this->pageName . '=' . $page;
}
}
}

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。互联网+时代,时刻要保持学习,携手千锋PHP,Dream It Possible。

posted @ 2017-06-01 17:11  lhbryant  阅读(196)  评论(0)    收藏  举报