自定义MVC框架之工具类-分页类的封装

2018-02-27 08:59:58来源:cnblogs.com作者:ghostwu人点击

分享

以前写过一个MVC框架,封装的有点low,经过一段时间的沉淀,打算重新改造下,之前这篇文章封装过一个验证码类。

这次重新改造MVC有几个很大的收获

>全部代码都是用Ubuntu+Vim编写,以前都是windows上开发,这次彻底迷上Ubuntu Linux

>裸装php,用php自带的服务器解释执行php,缺哪个扩展就装哪个,最后通过整个MVC框架的开发,把Lamp所有的常用配置与细节搞懂

>通过扩展安装,学习扩展开发与php底层源码分析

总之,终于感觉层次又提升了不少。

分页类代码:

  1 <?php  2       3 class Page {  4     //每页显示的条目  5     protected $pageSize;      6     //总记录数  7     protected $totalRecord;  8     //当前页  9     protected $p; 10     //总页数 11     protected $totalPage; 12     protected $url; 13  14     public function __construct( $_pageSize, $_totalRecord ){ 15         $this->pageSize = $_pageSize; 16         $this->totalRecord = $_totalRecord;         17         $this->totalPage = ceil( $this->totalRecord / $this->pageSize ); 18         $this->p = $this->getCurPage(); 19         $this->url = $this->getUrl(); 20     } 21  22     public function setUrl( $p ){ 23         if( strstr( $this->url, '?' ) ) { 24             //url中有参数 25             $url = $this->url . '&p=' . $p; 26         }else { 27             //url中没有参数 28             $url = $this->url . '?p=' . $p; 29         } 30         return $url; 31     } 32  33     //首页 34     public function firstPage(){ 35         return $this->setUrl( 1 ); 36     } 37  38     //末页 39     public function lastPage(){ 40         return $this->setUrl( $this->totalPage ); 41     } 42  43     //上一页 44     public function prevPage(){ 45         if( $this->p - 1 <= 0 ) { 46             $prevPage = $this->p; 47         }else { 48             $prevPage = $this->p - 1; 49         } 50         return $this->setUrl( $prevPage ); 51     } 52  53     //下一页 54     public function nextPage(){ 55         if( $this->p + 1 > $this->totalPage ) { 56             $nextPage = $this->p; 57         }else { 58             $nextPage = $this->p + 1; 59         } 60         return $this->setUrl( $nextPage ); 61     } 62  63     //得到当前的页码 64     public function getCurPage(){ 65         $curPage = intval( $_GET['p'] ); 66         if ( empty( $curPage ) ) { 67             $curPage = 1; 68         }else if ( $curPage > $this->totalPage ) { 69             $curPage = $this->totalPage; 70         }else if ( $curPage < 0 ){ 71             $curPage = 1; 72         } 73         return $curPage; 74     } 75  76     //拼接url 77     public function getUrl(){ 78         $protocol = strtolower( array_shift( explode( '/', $_SERVER['SERVER_PROTOCOL'] ) ) ); 79         $host = $_SERVER['SERVER_NAME']; 80         $port = $_SERVER['SERVER_PORT']; 81         $uri = $_SERVER['REQUEST_URI']; 82         $uriArr = parse_url( $uri ); 83         $path = $uriArr['path']; 84         if( !empty( $uriArr['query'] ) ) { 85             //url中的query字符转数组 86             parse_str( $uriArr['query'], $args ); 87             //清除原来的分页参数p 88             if( isset( $args['p'] ) ){ 89                 unset( $args['p'] ); 90             } 91             //参数重新拼接成字符串 92             $queryString = http_build_query( $args ); 93             //字符串如果不止一个p参数,把那些参数拼接在path的后面 94             if ( !empty( $queryString ) ){ 95                 $path .= '?' . $queryString; 96             } 97         } 98         return $protocol . '://' . $host . ':' . $port . $path; 99     }100 101     public function render(){102         return [103             'first' => $this->firstPage(),104             'last' => $this->lastPage(),105             'prev' => $this->prevPage(),106             'next' => $this->nextPage()107         ];108     }109 110     public function limit(){111         $offset = ( $this->p - 1 ) * $this->pageSize;112         return $offset . ',' . $this->pageSize;113     }114 }115 116 $page = new Page( 5, 11 );117 //echo $page->getCurPage();118 //echo $page->getUrl();119 print_r( $page->render() );120 121 ?>

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台