咱們接着上一篇的繼續說
今天開始做
php分頁類
。
話不多說直接代碼
<?php
// $page=new Page(5,60);
// var_dump($page->allUrl());
class Page{
//每頁顯示多少資料
protected $number;
//一共多少資料
protected $totalCount;
//目前頁
protected $page;
//總頁數
protected $totalPage;
//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;
}else if($_GET['page']>$this->totalPage){
$page=$this->totalPage;
}else if ($_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'];
//得到路徑和請求字元串
$uri=$_SERVER['REQUEST_URI'];
//中間處理 将page=5等這種字元串拼接url中,是以如果原來有page這個參數,我們首先需要将原來的page參數清空
$uriArray=parse_url($uri);
// var_dump($uriArray);
$path=$uriArray['path'];
if(!empty($uriArray['query'])){
//首先将請求字元串變為關聯數組
parse_str($uriArray['query'],$array);
//清除掉關聯數組中的page鍵值對
unset($array['page']);
//将剩下的參數拼接為請求字元串
$query=http_build_query($array);
//再将請求字元串拼接到路徑的後面
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 next(){
if($this->page+1>$this->totalPage){
$page =$this->totalPage;
}else{
$page=$this->page+1;
}
return $this->setUrl('page='.$page);
}
public function prev(){
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);
}
public function limit(){
//limit0,5 limit 5,5
$offset=($this->page-1)*$this->number;
return $offset.','.$this->number;
}
}
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczX0xiRGZkRGZ0Xy9GbvNGL2EzXlpXazxSP9cWT4dGVNBTTE5EM4wmYwhGWhxGZzwEMW1mY1RzRapnTtxkb5ckYplTeMZTTINGMShUYfRHelRHLwEzX39GZhh2css2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xyayFWbyVGdhd3LcV2Zh1Wa9M3clN2byBXLzN3btg3PH5EUukzMzQTN1EjM0EDMxkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
總結:每天進步一點點