page = max(1, isset($params['page']) ? intval($params['page']) : 1); $this->total = max(1, isset($params['total']) ? intval($params['total']) : 1); $this->number = max(1, isset($params['number']) ? intval($params['number']) : 1); $this->bt_number = isset($params['bt_number']) ? intval($params['bt_number']) : 2; $this->where = (isset($params['where']) && is_array($params['where'])) ? $params['where'] : ''; $this->not_fields = (!empty($params['not_fields']) && is_array($params['not_fields'])) ? $params['not_fields'] : []; $this->url = isset($params['url']) ? $params['url'] : ''; $this->page_total = 1; $this->html = ''; /* 参数设置 */ $this->SetParem(); } /** * [SetParem 参数设置] */ private function SetParem() { /* 防止超出最大页码数 */ $this->page_total = ceil($this->total/$this->number); if($this->page > $this->page_total) $this->page = $this->page_total; /* url是否包含问号 */ $state = stripos($this->url, '?'); /* 额外条件url设置 */ if(!empty($this->where) && is_array($this->where)) { $tmp = true; foreach($this->where as $k=>$v) { if(!in_array($k, $this->not_fields) && !is_array($v)) { if($k == 'page') { continue; } $k = htmlspecialchars($k); $v = htmlspecialchars($v); if($tmp) { $this->url .= ($state === false) ? '?' : '&'; $this->url .= $k.'='.$v; $tmp = false; } else { $this->url .= '&'.$k.'='.$v; } } } $this->page_join = ($tmp == false) ? '&' : (($state === false) ? '?' : '&'); } else { $this->page_join = ($state === false) ? '?' : '&'; } } /** * [GetPageHtml 获取生成好的分页代码] */ public function GetPageHtml() { $before_disabled = ($this->page > 1) ? '' : ' class="am-disabled"'; $after_disabled = ($this->page > 0 && $this->page < $this->page_total) ? '' : ' class="am-disabled"'; $this->html .= ''; return $this->html; } /** * [GetButtonNumberHtml 获取button显示个数的html] * @return [string] [按钮个数html代码] */ private function GetButtonNumberHtml() { $html_before = ''; $html_after = ''; $html_page = '
  • '.$this->page.'
  • '; if($this->bt_number > 0) { /* 前按钮 */ if($this->page > 1) { $total = ($this->page-$this->bt_number < 1) ? 1 : $this->page-$this->bt_number; for($i=$this->page-1; $i>=$total; $i--) { $html_before = '
  • '.$i.'
  • '.$html_before; } } /* 后按钮 */ if($this->page_total > $this->page) { $total = ($this->page+$this->bt_number > $this->page_total) ? $this->page_total : $this->page+$this->bt_number; for($i=$this->page+1; $i<=$total; $i++) { $html_after .= '
  • '.$i.'
  • '; } } } return $html_before.$html_page.$html_after; } /** * [GetPageStarNumber 获取分页起始值] */ public function GetPageStarNumber() { return intval(($this->page-1)*$this->number); } } ?>