同驗證碼類,分頁也是在個人部落格,論壇等網站中不可缺少的方式,通過分頁可以在一個介面展示固定條數的資料,而不至於將所有資料全部羅列到一起,實現分頁的原理其實就是對資料庫查詢輸出加了一個limit限制,接下來我們就開始準備今天分頁類的邏輯 #### 邏輯準備 > 實現分頁,我們需要獲取準備以下屬性和方法
PHP 屬性{ 資料總條數 每一頁顯示的條數 計算出總頁數 獲取當前是第幾頁 顯示上一頁 顯示下一頁 顯示首頁 顯示尾頁 每一頁的url 資料限制limit } 方法{ 建構函式 計算總頁數 獲取當前頁 獲取上一頁 獲取下一頁 獲取首頁 獲取尾頁 獲取當前頁面url 獲取上一頁url 獲取下一頁url 獲取首頁url 獲取尾頁irl 生成limit記錄 重新生成url地址 顯示分頁連結,顯示分頁情況 }
#### 根據上面的邏輯,下一步將文字轉換為程式碼 首先,我們先宣告一個Page類,按照邏輯進行屬性宣告,並且進行初始化php class Page { //記錄總條數 protected $total; //每頁顯示幾條 protected $nums; //總頁數 protected $totalPages; //當前頁碼 protected $currentPage; //上一頁頁碼 protected $prevPage; //下一頁頁碼 protected $nextPage; //首頁頁碼 protected $firstPage; //尾頁頁碼 protected $endPage; //url protected $url; //limit,傳到資料庫的limit protected $limit; //建構函式,初始化 public function __construct($total, $nums) { $this->total = $total; $this->nums = $nums; $this->totalPages = $this->getTotalPages; $this->currentPage = $this->getCurrentPage; $this->getPrevPage; $this->getNextPage; $this->getFirstPage; $this->getEndPage; $this->getUrl; } }
接下來我們開始完善方法 – 計算總頁數php protected funciton getTotalPages { return ceil($this->total / $this->$nums); }
– 獲取當前頁碼php protected function getCurentPage { //判斷如果存在page引數並且page大於0,返回實際值,否則返回1 if(isset($_GET[`page`]) && intval($_GET[`page`]) > 0) { $this->currentPage = intval($_GET[`page`]); } else { $this->currentPage = 1; } return $this->currentPage; }
– 獲取上一頁php protected function getPrevPage { $this->prevPage = $this->currentPage - 1; if($this->prevPage prevPage = 1; } return $this->prevPage; }
– 獲取下一頁php protected function getNextPage { $this->nextPage = $this->currentPage + 1; return $this->nextPage; }
– 獲取首頁php protected function getFirstPage { $this->firstPage = 1; return $this->firstPage; }
– 獲取尾頁PHP protected function getEndPage { $this->endPage = $this->totalPages; return $this->endPage; }
#### 接下來開始拼接每個頁碼的url – 獲取當前頁的urlphp protected function getCurrentUrl { return $this->url.`$page=`.$this->currentPage; }
– 獲取前一頁的urlphp protected function getPrevUrl { return $this->url.`&page=`.$this->prevPage; }
– 獲取下一頁的urlphp protected function getNextUrl { return $this->url.`&page=`.$this->nextPage; }
– 獲取首頁的urlphp protected function getFirstUrl { return $this->url.`&page=`.$this->firstPage; }
– 獲取尾頁的urlphp protected function getEndUrl { return $this->url.`&page=`.$this->endPage; }
#### 生成limit記錄PHP public function limit { return ($this->currentPage - 1) * $this->nums.`,`.$this->nums; }
#### 生成url地址php public function getUrl { //獲取當前頁面的檔案位置 $url = $_SERVER[`REQUEST_URI`]; //將url引數解析成陣列 $parse = parse_url($url); //獲得域名地址 $path = $parse[`path`]; //獲取引數 $query = isset($parse[`query`]) ? $parse[`query`] : false; //如果有引數,把page這個引數先給幹掉,因為我們要重新拼接 if($query) { parse_str($query,$query); //幹掉page引數,保留其他引數 unset($query[`page`]); //http_build_query拼將引數拼接成請求 $uri = $parse[`path`].`?`.http_build_query($query); } else { $uri = rtrim($parse[`path`],`?`).`?`; } //智慧識別https和http協議和埠號 $protocal = (isset($_SERVER[`SERVER_PORT`]) && $_SERVER[`SERVER_PORT`] == 443) ? `https://` : `http://`; switch ($_SERVER[`SERVER_PORT`]) { case 80: case 443: $uri = $protocal.$_SERVER[`SERVER_NAME`].$uri; break; default: $uri = $protocal.$_SERVER[`SERVER_NAME`].`:`.$_SERVER[`SERVER_PORT`].$uri; break; } $this->url = $uri; }
> 到此所有的邏輯方面都已經處理完啦,接下來的render函式用來顯示分頁的連結PHP public function render { return array( [`first` => $this->getFirstUrl()], [`prev` => $this->getPrevUrl()], [`current` => $this->getCurrentUrl()], [`next` => $this->getNextUrl()], [`end` => $this->getEndUrl()] ); }
### 哦也,就這麼愉快的結束啦 使用方法如下PHP //new一個物件 $page = new Page(102,10); //列印出來上頁/下頁/首頁/尾頁……的url var_dump($page->render);
#### 後記 —php $url = http://www.jiazhua.com/OOP/Page.class.php?page=1 parse_url($url):將url的檔案路徑和引數分開並儲存到陣列中 .......................................... . array (size=2) .`path` => string `/OOP/Page.class.php` (length=36) .`query` => string `page=1` (length=6) .......................................... ... $query = "page=1&num=2&sex=男" parse_str($query,$query):將帶引數的字串解析成陣列 .......................................... . array . `page` => 1 .`num` => 2 .`sex` => `男` .......................................... ... $query = [`num`=>1,`sex`=>`男`] http_build_query($query):使用給出的關聯(或下標)陣列生成一個經過 URL-encode 的請求字串。 ......................................... . string ."num=1&&sex=`男`" ......................................... ... $_SERVER[`SERVER_PORT`] 獲取埠號 $_SERVER[`SERVER_NAME`] 當前執行指令碼所在的伺服器的主機名。如果指令碼執行於虛擬主機中,該名稱是由那個虛擬主機所設定的值決定
本文由甲爪cpa廣告聯盟整理編輯!
PHP物件導向(OOP)—-分頁類
相關文章
- PHP中物件導向的分頁類PHP物件
- 物件導向(oop)物件OOP
- PHP 物件導向 (十一)反射類PHP物件反射
- PHP 物件導向 (二)類屬性PHP物件
- Python OOP 物件導向程式設計PythonOOP物件程式設計
- 如何吃透Python的物件導向(OOP)Python物件OOP
- PHP物件導向PHP物件
- Kotlin 物件導向程式設計 (OOP) 基礎:類、物件與繼承詳解Kotlin物件程式設計OOP繼承
- PHP 物件導向 (九)物件導向三大特徵PHP物件特徵
- PHP物件導向(三)PHP物件
- PHP 物件導向 (四)類物件賦值為引用傳遞PHP物件賦值
- PHP 物件導向 (八)類的自動載入PHP物件
- python-程式導向、物件導向、類Python物件
- php中的程式導向與物件導向PHP物件
- Java物件導向——類與物件Java物件
- PHP 物件導向 (十)TraitsPHP物件AI
- PHP物件導向之&引用PHP物件
- Go物件導向程式設計OOP的實現Go物件程式設計OOP
- php分頁類PHP
- JAVA物件導向--抽象類Java物件抽象
- python物件導向思想(類與物件)Python物件
- OOP物件導向程式設計(Object-Oriented Programming)概述OOP物件程式設計Object
- PHP學習4——物件導向PHP物件
- PHP 核心技術 --物件導向PHP物件
- PHP 物件導向基礎概念PHP物件
- 物件導向設計原則&設計模式分類物件設計模式
- 物件導向 -- 類的組合物件
- C++ 類(物件導向初探)C++物件
- 物件導向之內部類物件
- 物件導向-物件導向思想物件
- PHP MySQL (三)物件導向 事務PHPMySql物件
- PHP 物件導向 (五)靜態方法PHP物件
- PHP 物件導向 (六)魔術方法PHP物件
- PHP基礎之物件導向篇PHP物件
- php基礎語法_物件導向PHP物件
- Java語言之物件導向—類與物件(上)Java物件
- 物件導向程式設計(OOP)的七大原則物件程式設計OOP
- php 分頁 分頁類 簡單實用PHP