thinkphp的分页类是非常常用的一个类,所以特别详细看了源码记录下来,以方便自己随时复习,这里的thinkphp是3.23的版本,但不管哪个版本万变不离其宗,只要搞懂了源码,换了版本也不会改变本质。
首先把源码的解读放上来,不过由于表述能力问题可能没有那么清晰。
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 麦当苗儿 <zuojiazi@vip.qq.com> <http://www.zjzit.cn>
// +----------------------------------------------------------------------
namespace Think;
class Page_my{
public $firstRow; // 起始行数
public $listRows; // 列表每页显示行数
public $parameter; // 分页跳转时要带的参数
public $totalRows; // 总行数
public $totalPages; // 分页总页面数
public $rollPage = 11;// 分页栏每页显示的页数
public $lastSuffix = true; // 最后一页是否显示总页数
private $p = 'p'; //分页参数名
private $url = ''; //当前链接URL
private $nowPage = 1; //当前页数,默认为一
// 分页显示定制
private $config = array(
/*头部显示总共记录条数*/
'header' => '<span class="rows">共 %TOTAL_ROW% 条记录</span>',
/*第一页样式*/
'prev' => '<<',
/*下一页样式*/
'next' => '>>',
/*分页第一页*/
'first' => '1...',
/*分页显示最后一页*/
'last' => '...%TOTAL_PAGE%',
/*分页显示栏数的格式,如果要添加或减少显示的样式就改这里,例如不想显示尾页,去掉%END%即可*/
'theme' => '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END%',
);
/**
* 架构函数
* @param array $totalRows 总的记录数
* @param array $listRows 每页显示记录数
* @param array $parameter 分页跳转的参数
*/
public function __construct($totalRows, $listRows=20, $parameter = array()) {
/*检查分页参数在config文件里是否设置,如果设置了将$p设置额外该参数*/
C('VAR_PAGE') && $this->p = C('VAR_PAGE'); //设置分页参数名称
/* 基础设置 */
$this->totalRows = $totalRows; //设置总记录数
$this->listRows = $listRows; //设置每页显示行数
/*如果$parameter为空,则取get的参数,否则取设置的参数,