PHP分页类编写学习笔记,先来几张课前项目分析的图片……


<?php
/**
* 数据翻页类
* User: dodo
* Date: 2017/12/27 0027
* Time: 上午 3:36
*/
require 'common.php';
class Page{
//每页显示多少数据
protected $number;
//数据总数
protected $totalCount;
//一共可以分多少页
protected $totalPage;
//当前页面是第几页
protected $page;
//url
protected $url;
public funnction __construct($number,$totalCount)
{
$this->number = $number;
$this->totalCount = $totalCount;
//得到的分页总数
$this->totalPage = $this->getTotalPage();
//得到当前页码
$thiss->page = $this->getPage();
//得到URL
$this -> url = $this->getUrl();
}
//获取分页总数
protected function getTotalPage()
{
//数据总数除以每页显示数向上取整得到 总共分页的数
return ceil($this->totalCount / $this->number);
}
//获取当前页码
protected function getPage()
{
//判断get方式传递的页码是否为空,
//1.如果为空 强制 页码为1
if(empty($_GET['page'])){
$page = 1;
//2.如果大于最大页数 强制为当前能够显示的最大页码
}else if($_GET['page'] > $this->totalPage){
$page = $this->totalPage;
//3.如果页码数小于1 强制为1
}else if($_GET['page'] < 1){
$page = 1;
//4.传递参数正确。
}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'];
//处理URL 重写URL处理掉PAGE=12323
$uriArray = parse_url($uri);
$path = $uriArray['path'];
if(!empty($uriArray['query'])){
//将get请求的字符串改成关联数字
parse_str($uriArray['query'],$array);
//清除掉关联数组中的page键值对
unset($array['page']);
//将剩下的字符串拼接为请求字符串
$query = http_build_query($array);
//拼接字符串到路径后面
if($array !=''){
$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 first()
{
return $this-> setUrl('page=1');
}
//得到下一页
public function next()
{
//根据当前page得到下一页的页码
if($this->page+1 > $this->totalPage){
$page = $this->totalPage;
}else{
$page = $this->page+1
}
return $this-> setUrl('page='.$page);
}
//得到上一页
public function prev()
{
//根据当前page得到下一页的页码
if($this->page - 1 <1){
$page = 1;
}else{
$page = $this->page - 1
}
return $this-> setUrl('page='.$page);
}
//得到最后一页
public function end()
{
//根据当前page得到下一页的页码
return $this-> setUrl('page='.$this->totalPage);
}
//得到全部URL
public function allUrl()
{
return [
'first'=>$this->first();
'prev'=>$this->prev();
'next'=>$this->next();
'end'=>$this->end();
];
}
//limit
public function limit()
{
$offset = ($this->page-1) * $this->number;
return $offset.','.$this->number;
}
}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号