tangframework分页是注册了服务,用户只要实现ipaginator接口,就可以使用自定义的分页类, 无 namespace tang\pagination;use tang\i18n\ii18n;/** * 分页实现 * class paginator * @package tang\pagination */class paginator implements ipaginator{ priv
tangframework分页是注册了服务,用户只要实现ipaginator接口,就可以使用自定义的分页类, namespace tang\pagination;use tang\i18n\ii18n;/** * 分页实现 * 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; } /** * 设置总量 * @param $total * @return mixed */ public function settotal($total) { $total = (int) $total; $total total = $total; } /** * 设置每页数量 * @param $pagenumber * @return mixed */ public function setpagenumber($pagenumber) { $pagenumber = (int)$pagenumber; $pagenumber pagenumber = $pagenumber; } /** * 获取每页数量 * @return int */ public function getpagenumber() { return $this->pagenumber; } /** * 获取最大页数 * @return int */ public function getmaxpage() { return $this->maxpage; } /** * 获取当前页 * @return int */ public function getnowpage() { return $this->nowpage; } /** * 获取分页数组 * @param int $nowpage 当前页 * @param int $total 总数量 * @param int $pagenumber 一页数量 * @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 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 $i); } for ($i = 0; $i $maxpage) { break; } $pages[] = array('name' => $p,'page'=>$p); } } else { for ($i = 1; $i $maxpage) { break; } $pages[] = array('name' => $i,'page'=>$i); } } $nextpage = $nowpage + 1; if ($nowpage $this->ii18n->get('next page'),'page'=>$nextpage); } $pages[] = array('name' => $this->ii18n->get('end page'),'page'=>$maxpage); return $pages; }}
namespace tang\pagination;use tang\i18n\ii18n;use tang\interfaces\isetconfig;/** * 分页接口 * interface ipaginator * @package tang\pagination */interface ipaginator{ /** * 设置语言包 * @param ii18n $ii18n * @return void */ public function setl18n(ii18n $ii18n); /** * 设置总量 * @param $total * @return void */ public function settotal($total); /** * 设置每页数量 * @param $pagenumber * @return void */ public function setpagenumber($pagenumber); /** * 获取每页数量 * @return int */ public function getpagenumber(); /** * 获取最大页数 * @return int */ public function getmaxpage(); /** * 获取当前页 * @return int */ public function getnowpage(); /** * 获取分页数组 * 返回的结果数组为array( * array('name'=>'第一页','page' => 1), * array('name'=>'1','page' => 1), * array('name'=>'2','page' => 2), * array('name'=>'下一页','page' => 2) * )形式 * @param int $nowpage 当前页 * @param int $total 总数量 * @param int $pagenumber 一页数量 * @return array */ public function getpages ($nowpage,$total = 0,$pagenumber = 0);}