成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PHP面向?qū)ο?OOP)----分頁類

qqlcbb / 1757人閱讀

摘要:男獲取端口號當(dāng)前運(yùn)行腳本所在的服務(wù)器的主機(jī)名。如果腳本運(yùn)行于虛擬主機(jī)中,該名稱是由那個(gè)虛擬主機(jī)所設(shè)置的值決定本文由甲爪廣告聯(lián)盟整理編輯

同驗(yàn)證碼類,分頁也是在個(gè)人博客,論壇等網(wǎng)站中不可缺少的方式,通過分頁可以在一個(gè)界面展示固定條數(shù)的數(shù)據(jù),而不至于將所有數(shù)據(jù)全部羅列到一起,實(shí)現(xiàn)分頁的原理其實(shí)就是對數(shù)據(jù)庫查詢輸出加了一個(gè)limit限制,接下來我們就開始準(zhǔn)備今天分頁類的邏輯 #### 邏輯準(zhǔn)備 > 實(shí)現(xiàn)分頁,我們需要獲取準(zhǔn)備以下屬性和方法 PHP 屬性{ 數(shù)據(jù)總條數(shù) 每一頁顯示的條數(shù) 計(jì)算出總頁數(shù) 獲取當(dāng)前是第幾頁 顯示上一頁 顯示下一頁 顯示首頁 顯示尾頁 每一頁的url 數(shù)據(jù)限制limit } 方法{ 構(gòu)造函數(shù) 計(jì)算總頁數(shù) 獲取當(dāng)前頁 獲取上一頁 獲取下一頁 獲取首頁 獲取尾頁 獲取當(dāng)前頁面url 獲取上一頁url 獲取下一頁url 獲取首頁url 獲取尾頁irl 生成limit記錄 重新生成url地址 顯示分頁鏈接,顯示分頁情況 } #### 根據(jù)上面的邏輯,下一步將文字轉(zhuǎn)換為代碼 首先,我們先聲明一個(gè)Page類,按照邏輯進(jìn)行屬性聲明,并且進(jìn)行初始化 php class Page { //記錄總條數(shù) protected $total; //每頁顯示幾條 protected $nums; //總頁數(shù) protected $totalPages; //當(dāng)前頁碼 protected $currentPage; //上一頁頁碼 protected $prevPage; //下一頁頁碼 protected $nextPage; //首頁頁碼 protected $firstPage; //尾頁頁碼 protected $endPage; //url protected $url; //limit,傳到數(shù)據(jù)庫的limit protected $limit; //構(gòu)造函數(shù),初始化 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; } } 接下來我們開始完善方法 - 計(jì)算總頁數(shù) php protected funciton getTotalPages { return ceil($this->total / $this->$nums); } - 獲取當(dāng)前頁碼 php protected function getCurentPage { //判斷如果存在page參數(shù)并且page大于0,返回實(shí)際值,否則返回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; } #### 接下來開始拼接每個(gè)頁碼的url - 獲取當(dāng)前頁的url php protected function getCurrentUrl { return $this->url."$page=".$this->currentPage; } - 獲取前一頁的url php protected function getPrevUrl { return $this->url."&page=".$this->prevPage; } - 獲取下一頁的url php protected function getNextUrl { return $this->url."&page=".$this->nextPage; } - 獲取首頁的url php protected function getFirstUrl { return $this->url."&page=".$this->firstPage; } - 獲取尾頁的url php 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 { //獲取當(dāng)前頁面的文件位置 $url = $_SERVER["REQUEST_URI"]; //將url參數(shù)解析成數(shù)組 $parse = parse_url($url); //獲得域名地址 $path = $parse["path"]; //獲取參數(shù) $query = isset($parse["query"]) ? $parse["query"] : false; //如果有參數(shù),把page這個(gè)參數(shù)先給干掉,因?yàn)槲覀円匦缕唇?if($query) { parse_str($query,$query); //干掉page參數(shù),保留其他參數(shù) unset($query["page"]); //http_build_query拼將參數(shù)拼接成請求 $uri = $parse["path"]."?".http_build_query($query); } else { $uri = rtrim($parse["path"],"?")."?"; } //智能識別https和http協(xié)議和端口號 $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; } > 到此所有的邏輯方面都已經(jīng)處理完啦,接下來的render函數(shù)用來顯示分頁的鏈接 PHP public function render { return array( ["first" => $this->getFirstUrl()], ["prev" => $this->getPrevUrl()], ["current" => $this->getCurrentUrl()], ["next" => $this->getNextUrl()], ["end" => $this->getEndUrl()] ); } ### 哦也,就這么愉快的結(jié)束啦 使用方法如下 PHP //new一個(gè)對象 $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的文件路徑和參數(shù)分開并保存到數(shù)組中 .......................................... . 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):將帶參數(shù)的字符串解析成數(shù)組 .......................................... . array . "page" => 1 ."num" => 2 ."sex" => "男" .......................................... ... $query = ["num"=>1,"sex"=>"男"] http_build_query($query):使用給出的關(guān)聯(lián)(或下標(biāo))數(shù)組生成一個(gè)經(jīng)過 URL-encode 的請求字符串。 ......................................... . string ."num=1&&sex="男"" ......................................... ... $_SERVER["SERVER_PORT"] 獲取端口號 $_SERVER["SERVER_NAME"] 當(dāng)前運(yùn)行腳本所在的服務(wù)器的主機(jī)名。如果腳本運(yùn)行于虛擬主機(jī)中,該名稱是由那個(gè)虛擬主機(jī)所設(shè)置的值決定
本文由甲爪cpa廣告聯(lián)盟整理編輯!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/22358.html

相關(guān)文章

  • thinkphp分頁bug--解決thinkphp分頁亂碼問題

    摘要:本文就這一問題給出解決方案。具體修改的代碼是在分頁類文件的最后加上一個(gè)自定義函數(shù),用于替換中的參數(shù)分隔符號,函數(shù)內(nèi)容如下自學(xué)博客修改最終生成的在文件的第行,將原來的修改為生成標(biāo)準(zhǔn)的經(jīng)過這兩步修改就可以解決分頁亂碼的問題了。 thinkphp自帶的分頁類存在bug,例如當(dāng)我們搜索關(guān)鍵詞時(shí),關(guān)鍵詞為中文,第二次點(diǎn)擊分頁的時(shí)候,就會(huì)亂碼,不能正常的顯示我們需要的頁碼。本文就這一問題給出解決方...

    Jrain 評論0 收藏0
  • 一步步實(shí)現(xiàn)thinkphp上的ajax無刷新分頁

    摘要:信息列表循環(huán)賦值分頁信息部分這一步是實(shí)現(xiàn)無刷新分頁的重點(diǎn),用到了的通信,通過與數(shù)據(jù)庫的交互,將獲取到的數(shù)據(jù)寫到模板中,替換掉之前的數(shù)據(jù)集,達(dá)到分頁的目的。 前言 thinkphp框架自帶的分頁類是每次翻頁都要刷新一下整個(gè)頁面,這種翻頁的用戶體驗(yàn)顯然是不太理想的,我們希望每次翻頁只刷新我們想要的數(shù)據(jù)集部分的數(shù)據(jù),這樣我們很容易想到ajax異步通信,用ajax與數(shù)據(jù)庫(本人在開發(fā)過程中使用...

    張遷 評論0 收藏0
  • 小型版php框架

    摘要:項(xiàng)目源碼地址鏈接地址簡單版框架特點(diǎn)單入口采用面向?qū)ο笏枷?,基于設(shè)計(jì)思想,使用觀察者,注冊器,工廠,代理,特性等模式開發(fā)。提供一些常用類圖片分頁文件上傳驗(yàn)證碼等。提供常用的插件文件壓縮合并觀察等?;谕ㄟ^數(shù)組下標(biāo)訪問配置文件。 項(xiàng)目源碼地址 鏈接地址(https://github.com/cxp1539/mi... Framework 簡單版php框架 Framework特點(diǎn) 單入口i...

    1treeS 評論0 收藏0
  • PHP_ThinkPHP

    摘要:相關(guān)信息,面向過程,面向?qū)ο?,輕量級。輕量級功能實(shí)用,面向過程和面向?qū)ο蠡旌祥_發(fā)。找到文件為文件名為驗(yàn)證碼類沒有在自動(dòng)加載類中載入,需要手動(dòng)載入。底層的和會(huì)影響原始的框架中的引入,可以使用框架中提供的引入。 不使用框架的問題 在實(shí)際工作中,如果不使用框架會(huì)遇到的問題。 程序項(xiàng)目生命時(shí)間非常短(維護(hù)性,生命力弱) 分共協(xié)作開發(fā)項(xiàng)目,彼此代碼風(fēng)格不一致。 開發(fā)程序,喜歡挖坑。 開發(fā)者離職...

    wind3110991 評論0 收藏0
  • Laravel學(xué)習(xí)筆記之PHP對象遍歷(Iterator)

    摘要:中在基礎(chǔ)集合類路由類中和分頁類中等,都用到了對象遍歷這個(gè)小知識點(diǎn),這些類都是實(shí)現(xiàn)了這個(gè)接口,這個(gè)接口定義,返回的是迭代器對象。標(biāo)準(zhǔn)擴(kuò)展庫中提供了很多默認(rèn)迭代器實(shí)現(xiàn)類,比較常用的是數(shù)組迭代器對象,參考官網(wǎng)迭代器。 說明:本文章主要講述PHP的對象遍歷(Iterator)知識點(diǎn)。由于Laravel框架中就在集合(Collection)中用到了對象遍歷知識點(diǎn),故記錄并學(xué)習(xí)之。同時(shí),作者會(huì)將開...

    余學(xué)文 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<