ホームページ  >  記事  >  バックエンド開発  >  シンプルで純粋な PHP ページング クラス

シンプルで純粋な PHP ページング クラス

WBOY
WBOYオリジナル
2016-07-25 08:42:04905ブラウズ

その特徴: シンプル、パラメータを受け入れ、ページネーションを提供します; 柔軟: 前と次のページの名前 (たとえば、prev、next などと呼びたい) でページネーションの数を決定できます。各ページに表示される情報とクロスページの数。たとえば、一部の Web ページでは、各ページに li(

  • 1
  • ) を含める必要があります。

    ...) など 注: 提供されているサンプル コードには 2 つの静的メソッドがありますが、無視してかまいません。これは私自身のプロジェクト開発用です。 Call::import は、URL::refresh の代わりに include を使用できます。これはここでは説明しません。機会があれば説明します。getUrl( メソッドを使用します。 ) このページ http://www.oschin a.net/code/snippet_182375_6242

    [PHP] コード

    1. /**
    2. * FILE_NAME : Pages.php FILE_PATH : /lv/view/
    3. * 分页类
    4. *
    5. * @copyright Copyright (c) 2006-2010 mailTo:levi@cgfeel.com
    6. * @author Levi
    7. * @package lv.view .Pages
    8. * @subpackage
    9. * @version 2011-10-03
    10. */
    11. Call::import('lv.url.URL');
    12. class Pages
    13. {
    14. public $num = 1;
    15. public $size = 50;
    16. public $current = 1;
    17. private $_pages = array();
    18. private $_title = array();
    19. public function __construct($count, $size = 50)
    20. {
    21. $this-> num = ceil($count / $size);
    22. $size > 0 && $this->size = (Int)$size;
    23. $page = isset($_GET['page']) (Int)トリム($_GET['ページ']) : 1;
    24. $page > 1 && $this->current = (Int)$page;
    25. $this->_title = array('前のページ', ' 1..', $this->num.'..', '次のページ');
    26. }
    27. /**
    28. * パッケージのページング
    29. * @param String|Array $スカート
    30. * @param Array $entitle
    31. * @return String
    32. */
    33. public function warp($スカート, $entitle = array( ))
    34. {
    35. empty($this->_pages) && $this->get();
    36. $entitle += $this->_title;
    37. $スカート = (配列)$スカート + 配列(' ', NULL);
    38. $data = implode($スカート[1].$スカート[0], $this->_pages);
    39. !is_null($スカート[1]) && $data = $スカート[0] .$ data.$スカート[1];
    40. return vsprintf($data, $entitle);
    41. }
    42. /**
    43. * ページネーションを取得します
    44. * @param Int $num ページネーション番号を表示します
    45. * @param Int $span ページネーション間隔
    46. */
    47. public function get($num = '5', $span = ' 2' )
    48. {
    49. $this->pages = array();
    50. $start = $this->current - $num + $span;
    51. $start
    52. $end = $ start + $num;
    53. $end > $this->num && $end = (Int)$this->num;
    54. $this->current > _pages [] = $this->_setPage($this->current - 1, '%1$s');
    55. $start > 1 && $this->_pages[] = $this->_setPage( NULL, '%2$s');
    56. for($i = $start; $i _pages[] = $this->_setPage($i, $ i) ;
    57. $end < $this->num && $this->_pages[] = $this->_setPage($this->num, '%3$s');
    58. $this -> ;current < $this->num && $this->_pages[] = $this->_setPage($this->current + 1, '%4$s');
    59. return (配列) $this->_pages;
    60. }
    61. プライベート関数 _setPage($page, $name = '%s')
    62. {
    63. $hover = $page == $this->current ' class="pageHover "' : '';
    64. return sprintf('%s', URL::refresh(array('page' => $page)), $ hover, $name);
    65. }
    66. }
    67. ?>
    コードをコピー

    使用デモ

    1. $pages = new Pages(100, 20);
    2. $pages->warp('|');
    コードをコピー
    ページネーション、PHP


    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。