• <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ā)
    • 返回頂部
    国产精品视频网站你懂得| 嫩草影院久久国产精品| 国产精品美女久久久网站| 国产午夜亚洲精品| 久久精品www人人爽人人| 久久久久国产精品| 国产综合精品蜜芽| 精品多毛少妇人妻AV免费久久| 日韩精品中文字幕在线观看| 国产乱人伦app精品久久| 国产综合精品一区二区| 在线播放精品一区二区啪视频| 国产精品久久婷婷六月丁香| 国产在线观看麻豆91精品免费| 精品亚洲AV无码一区二区| 97精品在线视频| 久久精品国产网红主播| 亚洲国产精品lv| 久久99精品久久久久久青青日本| 久久精品国产亚洲av麻豆| 国产成人精品午夜福利| 久久99热狠狠色精品一区| 国产在线精品网址你懂的| 国产午夜精品一二区理论影院| 国产偷国产偷精品高清尤物| 中文精品人人永久免费| 99久久国产精品免费一区二区| 成人精品视频一区二区三区不卡 | 日韩制服丝袜在线| 1024日韩看片四虎紧急入口| 日韩中文字幕在线观看| 日韩免费一区二区三区| 青青青青久久精品国产h久久精品五福影院1421 | 亚洲人成精品久久久久| 自拍偷在线精品自拍偷| 国产精品无码专区| 国产精品视频色拍拍| 久久久久亚洲精品美女| 99热成人精品国产免国语的| 亚洲国产精品久久人人爱| 99任你躁精品视频|