分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

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

发布时间:2023-09-06 01:43责任编辑:顾先生关键词:MVC

以前写过一个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 ?>

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

原文地址:https://www.cnblogs.com/ghostwu/p/8476292.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved