php分页类

来源:互联网 发布:数据库设置主键的语句 编辑:程序博客网 时间:2024/06/07 23:34
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。


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 眼镜金属架断了怎么办 纯钛眼镜架断了怎么办 万次火柴没油了怎么办 火疖子破了流脓怎么办 火疖子没有脓头怎么办 孕妇长火疖子疼怎么办 手上长小水泡痒怎么办 脚上起水泡很痒怎么办 手指上有水泡痒怎么办 手指起小水泡痒怎么办 手过敏起小水泡怎么办 头皮上白色像癣怎么办 脸上长了火疖子怎么办 脸上长硬硬的包怎么办 下身体痒痒得不得了怎么办 头皮干痒头屑多怎么办 头发掉的露头皮怎么办 头上老是有结痂怎么办 婴儿头上的黄痂怎么办 头皮屑多又痒怎么办小偏方 皮肤瘙痒起红疙瘩怎么办 头又油又痒怎么办 头上反复长脓包怎么办 额头上长了粉刺怎么办 身上长红疙瘩很痒怎么办 脸上的痘痘变硬怎么办 痘痘变成硬疙瘩怎么办 痘痘变硬了怎么办知乎 痘痘里面是硬的怎么办 皮肤出油毛孔大怎么办 蹭无线网信号差怎么办 无线网离得太远怎么办 无线网不好使了怎么办 火疖子化脓破了怎么办 脸上长了个疖子怎么办 脸上起了火疖子怎么办 脸上长了火疙瘩怎么办 脸上长疖子了该怎么办? 头上神经线疼怎么办 打了肉毒发烧了怎么办 不小心吃了活蛆怎么办