PHP中物件導向的分頁類
$page = new Page(53,10);
$p = $page->rendor();
echo '
';';var_dump($p);
echo'
class Page
{
protected $url; //URL
protected $pageCount; //總頁數
protected $total; //總條數
protected $num; //每頁顯示數
protected $page; //當前頁
//初始化成員屬性
public function __construct($total,$num = 5)
{
//總條數
$this->total = ($total > 0 )? (int) $total : 1;
//每頁顯示條數
$this->num = $num;
//總頁數
$this->pageCount = $this->getPageCount();
//當前頁
$this->page = $this->getCurrentPage();
//URL
$this->url = $this->getUrl();
}
//一次性返回所有的分頁資訊
public function rendor()
{
return[
'first' => $this->first(),
'next' => $this->next(),
'prev' => $this->prev(),
'end' => $this->end(),
];
}
//limit方法,在未來分頁資料查詢的時候,直接返回對應的limit0,5 這樣的字串
public function limit()
{
$offset = ($this->page - 1) * $this->num;
$str = $offset.','.$this->num;
return $str;
}
//首頁,設定page = 1
protected function first()
{
return $this->setQueryString('page=1');
}
//上一頁
protected function prev()
{
$page = ($this->page page - 1);
return $this->setQueryString('page='.$page);
}
//下一頁
protected function next()
{
$page = ($this->page >= $this->pageCount) ? $this->pageCount : ($this->page + 1);
return $this->setQueryString('page='.$page);
}
//首頁
protected function end()
{
return $this->setQueryString('page='.$this->pageCount);
}
//一種情況有? 一種情況沒有?
protected function setQueryString($page)
{
//查詢url中是否有問號
if (stripos($this->url, '?')) {
return $this->url.'&'.$page;
} else {
//沒有問號就拼接
return $this->url.'?'.$page;
}
}
//處理URL
protected function getUrl()
{
//獲取使用者的uri
$path = $_SERVER['REQUEST_URI'];
//解析uri
$par = parse_url($path);
//判斷使用者是否設定過query
if (isset($par['query'])) {
parse_str($par['query'],$query);
//檢查query 裡面時候有page,如果有的話就幹掉page
unset($query['page']);
$path = $par['path'] . '?'.http_build_query($query);
}
$path = rtrim($path,'?');
//協議:主機:埠:檔案和請求
//判斷是否定義過埠,並且埠是否為443,如果為443則是https協議,否則就是http協議
$protocal = (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) ? 'https//' : 'http://';
if (80 == $_SERVER['SERVER_PORT'] || 443 == $_SERVER['SERVER_PORT']) {
$url = $protocal.$_SERVER['SERVER_NAME'].$path;
}else{
$url = $protocal.$_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].$path;
}
//全新的url
return $url;
}
//處理當前頁Page
protected function getCurrentPage()
{
//如果有page,就返回轉換為int的page
if (isset($_GET['page'])) {
//得到頁碼
$page = (int) $_GET['page'];
//當前頁碼不能給大於總頁碼
if ($page > $this->pageCount) {
$page = $this->pageCount;
}
if ($page
$page = 1;
}
}else {
$page = 1;
}
return $page;
}
//處理總頁數
protected function getPageCount()
{
//進一法取整
return ceil($this->total / $this->num);
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2318/viewspace-2801694/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PHP物件導向(OOP)—-分頁類PHP物件OOP
- php中的程式導向與物件導向PHP物件
- PHP 物件導向 (十一)反射類PHP物件反射
- PHP 物件導向 (二)類屬性PHP物件
- PHP物件導向PHP物件
- PHP 物件導向 (八)類的自動載入PHP物件
- PHP 物件導向 (九)物件導向三大特徵PHP物件特徵
- PHP物件導向(三)PHP物件
- PHP 物件導向 (四)類物件賦值為引用傳遞PHP物件賦值
- python中物件導向_類_物件的概念與定義Python物件
- python-程式導向、物件導向、類Python物件
- Java物件導向——類與物件Java物件
- PHP 物件導向 (十)TraitsPHP物件AI
- PHP物件導向之&引用PHP物件
- 物件導向 -- 類的組合物件
- 物件導向中類和物件的定義是什麼?物件
- php分頁類PHP
- JAVA物件導向--抽象類Java物件抽象
- python物件導向思想(類與物件)Python物件
- PHP 核心技術 --物件導向PHP物件
- PHP 物件導向基礎概念PHP物件
- PHP學習4——物件導向PHP物件
- 物件導向設計原則&設計模式分類物件設計模式
- Golang 中的物件導向Golang物件
- 【物件導向的PHP】之模式:目錄物件PHP模式
- 物件導向的基本理論1:類和物件物件
- 物件導向之內部類物件
- C++ 類(物件導向初探)C++物件
- 物件導向-物件導向思想物件
- php基礎語法_物件導向PHP物件
- PHP MySQL (三)物件導向 事務PHPMySql物件
- PHP 物件導向 (五)靜態方法PHP物件
- PHP 物件導向 (六)魔術方法PHP物件
- PHP基礎之物件導向篇PHP物件
- java物件導向(中)Java物件
- Java語言之物件導向—類與物件(上)Java物件
- PHP 物件導向 - 物件的淺拷貝與深拷貝PHP物件
- php 分頁 分頁類 簡單實用PHP