codeigniter中测试通过的分页类示例

通用分页类(以Codeigniter测试)

page_list.php

代码如下:

/**
* 分页类
*/
class Page_list {

/**
* 总数据
* @var int
*/
private $total;
/**
* 每页显示数据
* @var int
*/
private $size;
/**
* 当前页数
* @var int
*/
private $page;
/**
* 页数列表左右页数
* @var int
*/
private $len;

/**
* 总页数
* @var int
*/
private $page_total;
/**
* 页码列表
* @var array
*/
private $page_list;

/**
* 基准地址
* @var string
*/
private $base_url;
/**
* 替换标志
* @var string
*/
private $place;
/**
* 分页样式
* @var string
*/
private $style;


/**
* 构造函数
*
* @param array $config 配置数组
*/
public function __construct($config = array()){
// 初始化默认值
$this->total = 0;
$this->size = 20;
$this->page = 1;
$this->len = 4;
$this->page_total = 1;
$this->page_list = array();
$this->base_url = '?page=-page-';
$this->place = '-page-';
$this->style = $this->get_default_style();
$this->initialize($config);
}

/**
* 初始化分页
*
* @param array $config 配置数组
*/
public function initialize($config = array()){
// 取得配置值
if(is_array($config)){
if(array_key_exists('total',$config)) $this->total = @intval($config['total']);
if(array_key_exists('size',$config)) $this->size = @intval($config['size']);
if(array_key_exists('page',$config)) $this->page = @intval($config['page']);
if(array_key_exists('len',$config)) $this->len = @intval($config['len']);
if(array_key_exists('base_url',$config)) $this->base_url = @strval($config['base_url']);
if(array_key_exists('place',$config)) $this->place = @strval($config['place']);
if(array_key_exists('style',$config)) $this->style = @strval($config['style']);
}
// 修正值
if($this->total<0) $this->total = 0;
if($this->size<=0) $this->size = 20;
if($this->page<=0) $this->page = 1;
if($this->len<=0) $this->len = 4;
// 执行分页算法
$this->page_total = ceil($this->total/$this->size);
if($this->page_total<=0) $this->page_total = 1;
if($this->page>$this->page_total) $this->page = $this->page_total;
if($this->page-$this->len>=1){
for($i=$this->len; $i>0; $i--){
$this->page_list[] = $this->page - $i;
}
}else{
for($i=1; $i<$this->page; $i++){
$this->page_list[] = $i;
}
}
$this->page_list[] = $this->page;
if($this->page+$this->len<=$this->page_total){
for($i=1; $i<=$this->len; $i++){
$this->page_list[] = $this->page + $i;
}
}else{
for($i=$this->page+1; $i<=$this->page_total; $i++){
$this->page_list[] = $i;
}
}
}

/**
* 默认分页样式
*
* @return string
*/
public function get_default_style(){
$style = '';
return $style;
}

/**
* 是否是第一页
*
* @return bool
*/
public function is_first_page(){
return $this->page == 1;
}

/**
* 获取第一页页码
*
* @return int
*/
public function get_first_page(){
return 1;
}

/**
* 是否是最后一页
*
* @return bool
*/
public function is_last_page(){
return $this->page == $this->page_total;
}

/**
* 获取最后一页页码
*
* @return int
*/
public function get_last_page(){
return $this->page_total;
}

/**
* 是否存在上一页
*
* @return bool
*/
public function has_prev_page(){
return $this->page > 1;
}

/**
* 是否存在下一页
*
* @return bool
*/
public function has_next_page(){
return $this->page < $this->page_total;
}

/**
* 获取上一页页码
*
* @return int
*/
public function get_prev_page(){
return $this->has_prev_page() ? $this->page - 1 : $this->page;
}

/**
* 获取下一页页码
*
* @return int
*/
public function get_next_page(){
return $this->has_next_page() ? $this->page + 1 : $this->page;
}

/**
* 获取当前页页码
*
* @return int
*/
public function get_curr_page(){
return $this->page;
}

/**
* 获取总数据数
*
* @return int
*/
public function get_total(){
return $this->total;
}

/**
* 获取每页显示数据数
*
* @return int
*/
public function get_size(){
return $this->size;
}

/**
* 获取总页数
*
* @return int
*/
public function get_total_page(){
return $this->page_total;
}

/**
* 构建并返回分页代码
*
* @param string $base_url 基准地址
* @param string $place 替换标志
* @param string $style 分页样式
* @return string 分页HTML代码
*/
public function display($base_url = '',$place = '',$style = ''){
if($base_url==='') $base_url = $this->base_url;
if($place==='') $place = $this->place;
if($style==='') $style = $this->style;
$str = $style.'

';
return $str;
}

}
?>

/application/view/pagelist.php

代码如下:

class Pagelist extends CI_Controller {

public function page(){
$this->load->helper('url');
$page = $this->input->get('page');
$page = @intval($page);
if($page<=0) $page = 1;
$this->load->library('page_list',array('total'=>10000,'size'=>16,'page'=>$page));
$pl = $this->page_list->display(site_url('pagelist/page/page/-page-'));
$this->load->view('pagelist',array('pl' => $pl));
}

}
?>

/application/view/pagelist.php

代码如下:




分页测试





版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


如何选择合适的 C++ Web 开发框架?
利用 C++ 框架构建高并发 Web 应用的策略
用 C++ 框架开发跨平台图形应用程序
golang框架中安全编码实践的最佳指南是什么?
golang框架与其他语言框架在设计理念上的区别有哪些?
C++ 图形框架与其他语言框架的比较
C++ 框架与其他 Web 开发框架的对比分析
使用 C++ 框架构建大型项目最佳实践
C++ 框架如何提高大型项目开发效率
C++ 框架中依赖注入的持续集成与部署工具
如何与社区协作和贡献到自定义 Golang 框架?
C++ 框架在大型项目中如何实现模块化开发
使用 C++ 框架开发跨平台 Web 应用
C++ 框架在大型项目中的优缺点
golang框架在性能上的优势体现在哪些方面?
C++ 框架在嵌入式系统内存优化中的优势
golang框架在人工智能与机器学习中的作用
如何扩展 Golang 框架以支持特定功能?
如何利用 Go Modules 和依赖项管理来自定义 Golang 框架?
Golang 框架中的性能优化技巧