page分页类

    class Page
	{
		protected $number;//每页显示量
		protected $totalCount;//总数据量
		protected $totalPage;//总页数
		protected $page;//当前页
		protected $url;//当前url
		
		public function __construct($number=5, $totalCount=60)
		{
			$this->number = $number;
			$this->totalCount = $totalCount;
			$this->totalPage = $this->getTotalPage();
			$this->page = $this->getPage();
			$this->url = $this->getUrl();
		}
		
		/**
		*总页数
		 */
		protected function getTotalPage()
		{
			return ceil($this->totalCount/$this->number);
		}
		/**
		*当前页
		 */
		protected function getPage()
		{
			if (empty($_GET['page'])) {
				$page = 1;
			} else if ($_GET['page'] > $this->totalPage) {
				$page = $this->totalPage;
			} else if ($_GET['page'] < 1) {
				$page = 1;
			} else {
				$page = $_GET['page'];
			}
			return $page;
		}
		
		/**
		*当前url
		 */
		protected function getUrl()
		{
			$scheme = $_SERVER['REQUEST_SCHEME'];//当前url协议
			$host = $_SERVER['SERVER_NAME'];//当前url主机名
			$port = $_SERVER['SERVER_PORT'];//当前url端口
			$uri = $_SERVER['REQUEST_URI'];//当前url除协议、主机名、端口以外的
			
			$uriArr = parse_url($uri);//解析一个uri
			$path = $uriArr['path'];//得到文件路径
			
			if (!empty($uriArr['query'])) {
				parse_str($uriArr['query'], $arr);//将请求字符串转为数组
				unset($arr['page']);//清除数组中的page键和值
				$query = http_build_query($arr);//将清除page后的数组转为字符串
				if ('' != $query) {
					$path = $path . '?' . $query;
				}
			}
			return $scheme . '://' . $host . ':' . $port . $path;//返回一个当前url
		}
		
		/**
		*输出分页
		*@param 
		*@return array
		 */
		public function allUrl()
		{
 			return [
			    'first' => $this->first(),
				'next' => $this->next(),
				'prev' => $this->prev(),
				'end' => $this->end(),
			]; 
		}
		
		/**
		*设置当前页的url
		*@param string
		*@return string
		 */
		public function setUrl($str)
		{
			if (strstr($this->url, '?')) {
				$url = $this->url . '&' . $str; 
			} else {
				$url = $this->url . '?' . $str;
			}
			return $url;
		}
		
		/**
		*首页
		*@return string
		 */
		public function first()
		{
			return $this->setUrl('page=1');
		}
		
		/**
		*下一页
		*@return string
		 */
		public function next()
		{
			if ($this->page + 1 > $this->totalPage) {
				$page = $this->totalPage;
			} else {
				$page = $this->page + 1;
			}
			return $this->setUrl('page='.$page);
		}
		
		/**
		*上一页
		*@return string
		 */
		public function prev()
		{
			if ($this->page - 1 < 1) {
				$page =1;
			} else {
				$page = $this->page - 1;
			}
			return $this->setUrl('page='.$page);
		}
		
		/**
		*最后一页
		*@return string
		 */
		public function end()
		{
			return $this->setUrl('page='.$this->totalPage);
		}
		
		/**
		*每页偏移量
		*@return int
		 */
		public function limit()
		{
			$offset = ($this->page - 1) * $this->number;
			return $offset . ',' . $this->number;
		}
	}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值