PHP中面向对象的分页类
admin
2023-06-21 17:22:08
0
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 <= 1) ? 1 : ($this->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 < 1) { $page = 1; } }else { $page = 1; } return $page; } //处理总页数 protected function getPageCount() { //进一法取整 return ceil($this->total / $this->num); } }


相关内容

热门资讯

面对中国,“发达国家犯的最大错... 【文/观察者网 阮佳琪】在2026年北京国际汽车展览会这一全球规模最大的车展举办期间(4月24日至5...
全新问界M9感知系统公布:搭载... PChome 5月27日消息,今日,在全新问界M9发布会中,华为常务董事、产品投资评审委员会主任、终...
看见2030!一起打开河南“十... 5月28日,“开局起步‘十五五’”河南专场新闻发布会在郑州举行。发布会以“奋...
杭州通报非法代孕窝点情况 5月28日,据“天天看临平”公众号,浙江省杭州市临平区今日联合调查处置组发布情况通报。针对群众反映临...
维他科技取得上悬窗用铰链专利,... 国家知识产权局信息显示,广东维他科技有限公司取得一项名为“一种上悬窗用铰链”的专利,授权公告号CN2...
韩国前总统尹锡悦涉嫌作伪证案一... 新华社首尔5月28日电(记者 黄昕欣)据韩联社消息,韩国前总统尹锡悦涉嫌在前国务总理韩德洙涉内乱案...
许君以昌 商通四海——解码城商... 地标“许昌之门”广场上的“许君以昌”石刻,尽显汉魏古都的开放与厚重。在许昌智能继电器股份有限公司装配...
华为成立半导体公司:从自研5G... 快科技5月26日消息,2026国际电路与系统研讨会上,华为公司董事、半导体业务部总裁何庭波在题为半导...
坚决打好“三夏”攻坚战 全力确... 河南日报讯(全媒体记者 李宗宽 王娟)5月27日,副省长李酌赴南阳调研“三夏”生产工作。李酌先后来到...
津巴布韦宣布将14种关键矿产强... 津巴布韦政府近日发布《矿产分类与宣言》,正式将锂、镍、钴、石墨等14种矿产列为受股权和出口管制的“关...