<?php
class Page{
protected $number;//每页显示多少条数据
protected $totalCount;//一共有多少条数据
protected $page;//当前页
protected $totalPage;//总页数
protected $url;
public function __construct($number,$totalCount){
$this->number = $number;
$this->totalCount = $totalCount;
//得到总页数
$this->totalPage = $this->getTotalPage();
//得到当前页数
$this->page = $this->getPage();
//得到url
$this->url = $this->getUrl();
}
protected function getTotalPage(){
return ceil($this->totalCount/$this->number);
}
protected function getPage(){
if(empty($_GET['page'])){
$page = 1;
}else if($_GET['page'] > $this->totalPage){
$page = $this->totalPage;
}else{
$page = $_GET['page'];
}
return $page;
}
protected function getUrl(){
$scheme = $_SERVER['REQUEST_SCHEME'];//协议
$host = $_SERVER['SERVER_NAME'];//主机名
$port = $_SERVER['SERVER_PORT'];//端口号
$uri = $_SERVER['REQUEST_URI'];//得到路径和请求字符串
//清除原来page的参数
$uriArray = parse_url($uri);
$path = $uriArray['path'];
if(!empty($uriArray['query'])){
//将请求字符串变成关联数组
parse_str($uriArray['query'],$arr);
//清除关联数组中的page键值对
unset($arr['page']);
//将剩下额参数拼接为请求字符串
$query = http_build_query($arr);
//再将请求字符串拼接到路径后面
if($query != ''){
$path = $path.'?'.$query;
}
}
return $scheme.'://'.$host.':'.$port.$path;
}
protected function setUrl($str){
if(strstr($this->url,'?')){
$url = $this->url.'&'.$str;
}else{
$url = $this->url.'?'.$str;
}
return $url;
}
public function allUrl(){
return [
'first' => $this->first(),
'prev' => $this->prev(),
'next' => $this->next(),
'end' => $this->end(),
];
}
public function first(){
return $this->setUrl('page=1');
}
public function end(){
return $this->setUrl('page='.$this->totalPage);
}
public function prev(){
if($this->page -1 < 1){
$page = 1;
}else{
$page = $this->page -1;
}
return $this->setUrl('page='.$page);
}
public function next(){
if($this->page+1 > $this->totalPage){
$page = $this->totalPage;
}else{
$page= $this->page +1;
}
return $this->setUrl('page='.$page);
}
public function limit(){
$offset= ($this->page -1)*$this->number;
return $offset.','.$this->number;
}
}
封装分页类
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 使用第三方类库FMDB封装数据请求类,实现数据分页请求,上拉刷新下拉加载#### 实现功能:添加问题和答案,删除问...
- 本文为菜鸟窝作者刘婷的连载。”商城项目实战”系列来聊聊仿”京东淘宝的购物商城”如何实现。 在之前的文章《商城项目实...
- EasyDB 基于ORMLite封装的数据库操作工具类——致力于最简洁的数据库操作API 功能点 支持自定义数据库...