封装php分页类

本文介绍了一款用于Phalcon CMS的自定义PHP分页类,该类具备自动URL解析、高度可定制化特性,如分页参数名、样式类、按钮布局等。同时还支持多种分页方式和无效按钮的显示控制。
摘要由CSDN通过智能技术生成

最近在用phalcon写一个支持多国语言的cms,不太喜欢phalcon的分页,所以自己写了个分页工具类。
该分页类支持自动获取解析url,还支持高度自定义
例如:

  • 自定义分页参数名
  • 自定义选中页、禁用页的class值
  • 自定义首页、上一页、左边页、当前页、右边页、下一页、后缀
  • 自定义各按钮位置
  • 自定义左边或右边显示按钮个数
  • 自定义替换规则
  • 自定义是否显示无效按钮(首页、上一页、下一页、尾页)
  • 。。。

    默认第一页

    这里写图片描述

    自动识别检测url

    这里写图片描述

    支持多种分页方式混用

    这里写图片描述

分页类文件Paginator.php
<?php
/**
 * @desc 分页类
 * @author: ZhaoYang
 * @date: 2018年7月20日 下午10:07:11
 * <pre>
 * use Library\Tools\Paginator;
 * 方法1:
 * $paginator1 = new Paginator(100);
   echo $paginator1->show();
        方法2:
   $config2 = [
        'page' => 'p',
        'pagePattern' => '/([\/&?]p[\/=])([\d]+)/',
        'prevTheme' => '<a {href}><li class="{class}">上一页</li></a>',
        'nextTheme' => '<a {href}><li class="{class}">下一页</li></a>',
        'suffixTheme' => '<li class="totalPage">共<span>{totalPages}</span>页  当前第<span>{nowPage}</span>页</li>',
        'showTheme' => '<ul class="pageMenu clearfix">{getSuffixPage}{getFirstLinkPage}{getPrevLinkPage}{getLeftLinkPage}{getNowLinkPage}{getRightLinkPage}{getNextLinkPage}{getLastLinkPage}</ul>'
    ];
    $paginator2 = new Paginator(100, 7, null, $config2);
    echo $paginator2->show();
        方法3:
     $config3 = [
         'page' => 'pa',
         'pagePattern' => '/([\/&?]pa[\/=])([\d]+)/',
         'suffixTheme' => '<li class="totalPage">共<span>{totalPages}</span>页  当前第<span>{nowPage}</span>页</li>',
         'showTheme' => '{getFirstLinkPage}{getPrevLinkPage}{getLeftLinkPage}{getNowLinkPage}{getRightLinkPage}{getNextLinkPage}{getLastLinkPage}{getSuffixPage}',
         'isShowDisabled' => false
     ];
     $paginator3 = new Paginator(100, 5, null, $config3);
     echo $paginator3->show();   
     echo $paginator3->getLimit() . '<br>';
     echo $paginator3->getLimit(true) . '<br>';
     echo $paginator3->getOffset() . '<br>';
 * </pre>
 */

namespace Library\Tools;

class Paginator {

    // 分页参数名
    protected $page = 'page';

    // url中分页正则
    protected $pagePattern = '/([\/&?]page[\/=])([\d]+)/';

    // url
    protected $url = null;

    // url模板
    protected $urlTheme = null;

    // href
    protected $href = null;

    // href模板
    protected $hrefTheme = 'href="{urlTheme}"';

    // 禁用页class值
    protected $disabled = 'disabled';

    // 选中页class值
    protected $active = 'active';

    // 第一页模板
    protected $firstTheme = '<a {href}><li class="{class}">首页</li></a>';

    // 上一页模板
    protected $prevTheme = '<a {href}><li class="{class}"><</li></a>';

    // 当前页模板
    protected $nowTheme = '<a><li class="{class}">{nowPage}</li></a>';

    // 其它页模板
    protected $otherTheme = '<a {href}><li class="{class}">{otherPage}</li></a>';

    // 下一页模板
    protected $nextTheme = '<a {href}><li class="{class}">></li></a>';

    // 最后一页模板
    protected $lastTheme = '<a {href}><li class="{class}">尾页</li></a>';

    // 后缀模板
    protected $suffixTheme = '<li class="totalPage">共<span>{totalPages}</span>页 </li>';

    // protected $suffixTheme = '<li class="totalPage">共<span>{totalPages}</span>页 当前<span>{nowPage}</span>页 </li>';

    // 当前页左边显示$otherTheme的个数
    protected $leftSideAmount = 3;

    // 当前页右边显示$otherTheme的个数
    protected $rightSideAmount = 3;

    // 总记录数
    protected $totalRows = 0;

    // 每页显示的行数
    protected $listRows = 10;

    // 总页数
    protected $totalPages = 0;

    // 起始页码
    protected $startPage = 1;

    // 当前页码
    protected $nowPage = 1;

    // 展示的模板
    protected $showTheme = '{getFirstLinkPage}{getPrevLinkPage}{getLeftLinkPage}{getNowLinkPage}{getRightLinkPage}{getNextLinkPage}{getLastLinkPage}{getSuffixPage}';

    // 生成各部分时替换,当存在该属性时则替换成属性值,若该属性不存在,但存在该方法,则替换成该方法返回值,否则替换为当前设置的值
    protected $replaceRule = [ 
        // '{url}' => 'url', // 动态变化
        '{urlTheme}' => 'urlTheme',
        '{href}' => 'href', // 动态变化
        '{class}' => 'class', // 动态变化
        '{nowPage}' => 'nowPage',
        '{otherPage}' => 'otherPage', // 动态变化
        '{totalPages}' => 'totalPages',
        '{getFirstLinkPage}' => 'getFirstLinkPage',
        '{getPrevLinkPage}' => 'getPrevLinkPage',
        '{getLeftLinkPage}' => 'getLeftLinkPage',
        '{getNowLinkPage}' => 'getNowLinkPage',
        '{getRightLinkPage}' => 'getRightLinkPage',
        '{getNextLinkPage}' => 'getNextLinkPage',
        '{getLastLinkPage}' => 'getLastLinkPage',
        '{getSuffixPage}'
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值