• <kbd id="qyk40"></kbd>
  • <strike id="qyk40"></strike><samp id="qyk40"><pre id="qyk40"></pre></samp>
    Paginator分頁類   
    namespace Tang\Pagination;
    use Tang\I18n\II18n;
     
    /**
     * 分頁實(shí)現(xiàn)
     * Class Paginator
     * @package Tang\Pagination
     */
    class Paginator implements IPaginator
    {
        private $total = 0;
        private $pageNumber = 20;
        private $maxPage = 0;
        private $nowPage = 0;
        /**
         * 語言包
         * @var II18n
         */
        private $II18n;
        public function setl18n(II18n $II18n)
        {
            $this->II18n = $II18n;
        }
        /**
         * 設(shè)置總量
         * @param $total
         * @return mixed
         */
        public function setTotal($total)
        {
            $total = (int) $total;
            $total < 0 && $total = 0;
            $this->total = $total;
        }
     
        /**
         * 設(shè)置每頁數(shù)量
         * @param $pageNumber
         * @return mixed
         */
        public function setPageNumber($pageNumber)
        {
            $pageNumber = (int)$pageNumber;
            $pageNumber < 1 && $pageNumber = 20;
            $this->pageNumber = $pageNumber;
        }
     
        /**
         * 獲取每頁數(shù)量
         * @return int
         */
        public function getPageNumber()
        {
            return $this->pageNumber;
        }
     
        /**
         * 獲取最大頁數(shù)
         * @return int
         */
        public function getMaxPage()
        {
            return $this->maxPage;
        }
     
        /**
         * 獲取當(dāng)前頁
         * @return int
         */
        public function getNowPage()
        {
            return $this->nowPage;
        }
     
        /**
         * 獲取分頁數(shù)組
         * @param int $nowPage 當(dāng)前頁
         * @param int $total 總數(shù)量
         * @param int $pageNumber 一頁數(shù)量
         * @throws NowPageLtMaxPageException
         * @return array
         */
        public function getPages($nowPage,$total = 0,$pageNumber = 0)
        {
            if ($total)
            {
                $this->setTotal($total);
            }
            if ($pageNumber)
            {
                $this->setPageNumber($pageNumber);
            }
            $nowPage = (int) $nowPage;
            $nowPage < 1 && $nowPage = 1;
            $this->nowPage = $nowPage;
            $maxPage = $this->maxPage = ceil($this->total / $this->pageNumber);
            if (!$maxPage)
            {
                return false;
            }
            if ($nowPage > $maxPage)
            {
                throw new NowPageLtMaxPageException('No more pages!',null,50013);
            }
            $pages = array();
            $pages[] = array('name' => $this->II18n->get('First page'),'page'=>1);
            if ($nowPage > 1)
            {
                $pages[] = array('name' => $this->II18n->get('Prev page'),'page'=>$nowPage-1);
            }
            if ($nowPage > 5)
            {
                for ($i = $nowPage - 5; $i < $nowPage; $i ++)
                {
                    if ($i <= 0)
                        continue;
                    $pages[] = array('name' => $i,'page'=>$i);
                }
                for ($i = 0; $i < 5; $i ++)
                {
                    $p = $nowPage + $i;
                    if ($p > $maxPage)
                    {
                        break;
                    }
                    $pages[] = array('name' => $p,'page'=>$p);
                }
            } else
            {
                for ($i = 1; $i < 10; $i ++)
                {
                    if ($i > $maxPage)
                    {
                        break;
                    }
                    $pages[] = array('name' => $i,'page'=>$i);
                }
            }
            $nextPage = $nowPage + 1;
            if ($nowPage < $maxPage)
            {
                $pages[] = array('name' => $this->II18n->get('Next page'),'page'=>$nextPage);
            }
            $pages[] = array('name' => $this->II18n->get('End page'),'page'=>$maxPage);
            return $pages;
        }
    }
     

    IPaginator分頁接口

    namespace Tang\Pagination;
    use Tang\I18n\II18n;
    use Tang\Interfaces\ISetConfig;
     
    /**
     * 分頁接口
     * Interface IPaginator
     * @package Tang\Pagination
     */
    interface IPaginator
    {
        /**
         * 設(shè)置語言包
         * @param II18n $II18n
         * @return void
         */
        public function setl18n(II18n $II18n);
        /**
         * 設(shè)置總量
         * @param $total
         * @return void
         */
        public function setTotal($total);
     
        /**
         * 設(shè)置每頁數(shù)量
         * @param $pageNumber
         * @return void
         */
        public function setPageNumber($pageNumber);
     
        /**
         * 獲取每頁數(shù)量
         * @return int
         */
        public function getPageNumber();
     
        /**
         * 獲取最大頁數(shù)
         * @return int
         */
        public function getMaxPage();
     
        /**
         * 獲取當(dāng)前頁
         * @return int
         */
        public function getNowPage();
     
        /**
         * 獲取分頁數(shù)組
         * 返回的結(jié)果數(shù)組為array(
         *       array('name'=>'第一頁','page' => 1),
         * array('name'=>'1','page' => 1),
         * array('name'=>'2','page' => 2),
         *      array('name'=>'下一頁','page' => 2)
         * )形式
         * @param int $nowPage 當(dāng)前頁
         * @param int $total 總數(shù)量
         * @param int $pageNumber 一頁數(shù)量
         * @return array
         */
        public function getPages ($nowPage,$total = 0,$pageNumber = 0);
    }

     

    穩(wěn)定

    產(chǎn)品高可用性高并發(fā)

    貼心

    項(xiàng)目群及時(shí)溝通

    專業(yè)

    產(chǎn)品經(jīng)理1v1支持

    快速

    MVP模式小步快跑

    承諾

    我們選擇聲譽(yù)

    堅(jiān)持

    10年專注高端品質(zhì)開發(fā)
    • 返回頂部
    国产精品亚洲综合一区在线观看 | 精品一区二区三区在线视频| 国产一区二区三区日韩精品| 国产精品嫩草影院免费| 91精品免费国产高清在线| 99久久精品国产亚洲| 久久久久免费精品国产| 久久久久久亚洲精品不卡| 亚洲精品网站在线观看不卡无广告 | 香蕉在线精品视频在线观看6| 精品无码成人片一区二区| 日韩免费高清播放器| 国产精品黄页在线播放免费| 久久水蜜桃亚洲AV无码精品| 无码成人精品区在线观看| 精品国产AV一区二区三区| 91精品国产高清久久久久久| 99精品国产成人a∨免费看| 无码国产精品一区二区免费16 | 麻豆aⅴ精品无码一区二区| 久久这里只精品热免费99| 国产精品免费高清在线观看| 久久国产乱子精品免费女| 亚洲av永久无码精品国产精品| 国产产无码乱码精品久久鸭| 久久精品国产福利电影网| 久99久精品免费视频热77| 青草国产精品久久久久久| 99精品一区二区免费视频| 在线观看91精品国产入口| 麻豆国产精品有码在线观看| 国产精品视频久久| 香蕉久久丫精品忘忧草产品| 国产精品亚洲专区无码WEB| 欧洲精品免费一区二区三区| 国产伦精品一区二区三区免.费 | 国产91精品不卡在线| 国产亚洲蜜芽精品久久| 亚洲人精品午夜射精日韩| 日韩中文字幕精品免费一区| 日韩伦理一区二区|