php教程

超轻量级php框架startmvc

万能的php分页类

更新时间:2020-03-21 23:22:56 作者:startmvc
本文实例为大家分享了php分页类的具体代码,供大家参考,具体内容如下<?php/*核心:首

本文实例为大家分享了php分页类的具体代码,供大家参考,具体内容如下



<?php
/*核心:首页、上一页、下一页、尾页的url*/
/*超全局$_SERVER*/
$page = new Page(5,60);
var_dump($page->allUrl());
class Page{
// 每页显示的个数
 protected $number;
// 一共有多少数据
 protected $totalCount;
// 当前页
 protected $page;
// url
 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();
 echo $this->url;
 }
 /*得到总页数并向上取整*/
 protected function getTotalPage(){
 return ceil($this->totalCount/$this->number);
 }
 /**/
 protected function getPage(){
 if (empty($_GET['page'])){
 $page=1;
 }elseif ($_GET['page'] > $this->totalPage){
 $page = $this->totalPage;
 }elseif ($_GET["page"]<1){
 $page = 1;
 }else{
 $page = $_GET['page'];
 }
 return $page;
 }
 protected function getUrl(){
 //得到协议名
 $scheme = $_SERVER['REQUEST_SCHEME'];
 //得到主机名
 $host= $_SERVER['SERVER_NAME'];
 //得到端口号
 $port = $_SERVER['SERVER_PORT'];
 //得到路径和请求字符串
 $url = $_SERVER['REQUEST_URI'];
 /*中间做处理,要将page=5等这种字符串拼接URL
 中,所以如果原来的url中有page这个参数,我们首先
 需要将原来的page参数给清空*/
 $urlArray = parse_url($url);
// var_dump($urlArray);

 $path = $urlArray['path'];
 if (!empty($urlArray['query'])){
 //将query中的值转化为数组
 parse_str($urlArray['query'],$array);
 //如果他有page就将它删掉
 unset($array['page']);
 //将关联数组转化为query
 $query = http_build_query($array);
 //不为空的话就与path连结
 if ($query != ''){
 $path = $path.'?'.$query;
 }
 }
 return 'http://'. $host.':'.$port.$path;
 }
 protected function setUrl($str){
 if (strstr($this->url, '?')){
 $url = $this->url.'&'.$str;
 }else{
 $url = $this->url.'?'.$str;
 }
 return $url;
 }
 /*所有的url*/
 public function allUrl(){
 return [
 'first' => $this->first(),
 'next' => $this->next(),
 'prev'=> $this->prev(),
 'end'=> $this->end(),
 ];
 }
 /*首页*/
 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(){
 return $this->setUrl('page='.$this->totalPage);
 }
 /*limit 0,5*/
 public function limit(){
 $offset = ($this->page-1)*$this->number;
 return $offset.','.$this->number;
 }
 
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

php 分页类