ucym / CodeLapse

Fast coding for Small-scale PHP projects.
http://ucym.github.io/CodeLapse/
0 stars 1 forks source link

Pager class #7

Closed ucym closed 9 years ago

ucym commented 9 years ago

Benefit

ページネーションの実装にかかるコードが削減されます。

Feature

<?php
require 'd5/bs.php';

define('ITEMS_PER_PAGE', 30);

$current_page = $_GET['page'];
$result = DB::query('SELECT COUNT(*) AS `count` FROM `users`')->fetch();
$all_count = $result['count'];

// Pager 初期化
Pager::init($current_page, $all_count, ITEMS_PER_PAGE);
?>

<!-- Example 1 -->
<ul class="pager">
<?php Pager::hasPrev('<li class="pager__page pager__page-prev"><a href="search.php?page=:page">&lt;&lt; 戻る</a></li>')  ?>
<?php Pager::relateRange(5, '<li class="pager__page"><a href="search.php?page=:page"></li>') ?>
<?php Pager::hasNext('<li class="pager__page pager__page-next"><a href="search.php?page=:page">次へ&gt;&gt;</a></li>')  ?>

<!--- Example 2 -->
あるいは以下の書き方もできる
<?php if (Pager::hasPrev()) : ?>
<li class="pager__page pager__page-prev">
    <a href="search.php?page=:page">&lt;&lt; 戻る</a>
</li>
<?php end if; ?>

<?php foreach (Pager::relateRange(5) as $page) : ?>
<li class="pager__page"><a href="search.php?page=<?php echo $page ?>"></li>
<?php end foreach; ?>

<?php if (Pager::hasNext()) : ?>
<li class="pager__page pager__page-next">
    <a href="search.php?page=:page">次へ&gt;&gt;</a>
</li>
<?php end if; ?>
-->

Description

Pager::init($currentPage, $allCount, $perPage) : void

ページャーを初期化します。
$currentPage は現在いるページ番号を"0から"の値で指定します。
$allCount は表示できるアイテムが全部で何件あるかを指定します。
$perPage は1ページに表示するアイテムの件数を指定します。
Pager::hasPrev($content = null) : bool

前のページが存在するかを true / false で表す。
$content が指定された時、 前のページが存在すれば $contentを表示します。
その際、$content内の":page"を前のページのページ番号に置き換えます。
Pager::hasNext($content = null) : bool

次のページが存在するかを true / falseで表します。
その他の動作は ::hasPrevに準じます。
Pager::relateRange($before_after, $content = null) : array

今いるページの前後 $before_after ページの範囲の配列を返します。
現在のページが 2、 $before_afterに 5を指定した時  array(0, 1, 2, 3, 4, 5, 6 ,7)を返します。
$content が指定された時、$content内の":page"を処理中のページ番号に置き換えながら表示します。