導入

導入 – Pager 2.x の使用方法

Pager とは?

Pagerは、データの配列にページを付けるクラスです。 入力として受け取り、様々なパラメータによってページ付けを行います。 また、Pagerは、指定された範囲でリンクを生成し、 出力は完全にカスタマイズ可能です(たとえ、 mod_rewriteと併用していても動作します)。 Pager バージョン.1.xと Pager_SlidingのAPIには互換性があります。

例 1

この簡単な例は、アルファベット文字の配列を1ページあたり3文字ずつ ページ付けします。そして、前後2ページへのリンクを返します。

<?php
require_once 'Pager.php';
$params = array(
    
'mode'       => 'Jumping',
    
'perPage'    => 3,
    
'delta'      => 2,
    
'itemData'   => array('a','b','c','d','e',[...omissis...],'z')
);
$pager = & Pager::factory($params);
$data  $pager->getPageData();
$links $pager->getLinks();
//$links is an ordered+associative array with 'back'/'pages'/'next'/'first'/'last'/'all' links.
//NB: $links['all'] is the same as $pager->links;

//echo links to other pages:
echo $links['all'];

//Pager can also generate <link rel="first|prev|next|last"> tags
echo $pager->linkTags;

//Show data for current page:
echo 'PAGED DATA: ' print_r($data);

//Results from methods:
echo 'getCurrentPageID()...: 'var_dump($pager->getCurrentPageID());
echo 
'getNextPageID()......: 'var_dump($pager->getNextPageID());
echo 
'getPreviousPageID()..: 'var_dump($pager->getPreviousPageID());
echo 
'numItems()...........: 'var_dump($pager->numItems());
echo 
'numPages()...........: 'var_dump($pager->numPages());
echo 
'isFirstPage()........: 'var_dump($pager->isFirstPage());
echo 
'isLastPage().........: 'var_dump($pager->isLastPage());
echo 
'isLastPageComplete().: 'var_dump($pager->isLastPageComplete());
echo 
'$pager->range........: 'var_dump($pager->range);
?>

なぜ、$pager->rangeが配列になっているのか、疑問に思うかも知れません。 このキーは現在の範囲でのページ番号で、対応する値はブール型 (キーが現在のページを指しているのであればTRUE、その他はFALSE) です。 この配列は、手動でリンクを生成する際に有効です。 例えば、テンプレートエンジンを使用している場合です。

例 2

この例は、mod_rewriteを併用した場合、このクラスをどの様に使用するかを 示しています。 以下のような.htaccessがあるとします。


---------
RewriteEngine on
#Options FollowSymlinks

RewriteBase /
RewriteRule ^articles/([a-z]{1,12})/art([0-9]{1,4})\.html$ /article.php?num=$2&amp;month=$1 [L]
---------

これは、"/articles/march/art15.html"のようなURLを、 "/article.php?num=15&month=march"に変換します。

<?php
require_once 'Pager.php';

$month 'september';
$params = array(
    
'mode'      => 'Sliding',
    
'append'    => false,
    
'urlVar'    => 'num',
    
'path'      => 'http://myserver.com/articles/' $month,
    
'fileName'  => 'art%d.html',  //Pager replaces "%d" with page number...
    
'itemData'  => array('a','b','c',[...omissis...],'z'),
    
'perPage'   => 3
);
$pager = & Pager::factory($params);

$data  $pager->getPageData();
echo 
$pager->links;
echo 
'Data for current page: 'print_r($data);
?>

単一ページ内の複数のページャ

単一ページ内で一つ以上のページャを使用するには、 それぞれのページャに異なるurlVar を指定するだけです。

<?php
require_once 'Pager.php';

//first pager
$params1 = array(
    
'perPage'    => 3,
    
'urlVar'     => 'pageID_articles',  //1st identifier
    
'itemData'   => $someArray
);
$pager1 = & Pager::factory($params1);
$data1  $pager1->getPageData();
$links1 $pager1->getLinks();

//second pager
$params2 = array(
    
'perPage'    => 8,
    
'urlVar'     => 'pageID_news',      //2nd identifier
    
'itemData'   => $someOtherArray
);
$pager2 = & Pager::factory($params2);
$data2  $pager2->getPageData();
$links2 $pager2->getLinks();
?>

Pager と巨大な DB 結果セット

もし DB 結果セットにページ番号を付けたい場合、 配列に全ての結果をフェッチし Pager に渡すことは、 最良のオプションではないかも知れません。Pager にてこ入れし、ラッパーを使用することで良いパフォーマンスを得ることが できます。パッケージの /docs/examples/ ディレクトリに、PEAR DB 抽象システムのサンプルラッパーがあります。 これはそのまま、もしくは必要に応じてカスタマイズして使用できます。

クエリ文字列に変数を追加する

クエリ文字列にいくつかの変数を追加する必要がある場合、 extraVars パラメータを使用します。

<?php
$params 
= array(
    
'extraVars' => array(
        
'firstKey'  => 'firstValue',
        
'secondKey' => 'secondValue',
        
//...
    
),
    
//...
);
$pager1 = & Pager::factory($params);
?>

PHP 5ユーザのための重要事項

バージョン2.2.1から、PagerはPHP 5でも動作します。 しかし、コンストラクタ (非推奨) の代わりに factory()メソッドを使用する必要があります。

<?php
require_once 'Pager.php';

//wrong:
//$pager =& new Pager($params);

//right
$pager =& Pager::factory($params);

//continue as you did before
?>

もし、以前のバージョンを使用しており更新することができないのであれば、 PHP 5では以下のようなコードに書き換える必要があります。

<?php
//chose your preferred mode [Jumping | Sliding]:

//require_once 'Pager/Jumping.php';
require_once 'Pager/Sliding.php';

//$pager =& new Pager_Jumping($params);
$pager =& new Pager_Sliding($params);

//continue as you did before
?>
Pager (Previous) 2つのページャスタイルの特長を比較する (Next)
Last updated: Thu, 24 Apr 2014 — Download Documentation
Do you think that something on this page is wrong? Please file a bug report or add a note.
View this page in:

User Notes:

Note by: cweiske
You need to
<?php
require_once 'Pager/Pager.php';
?>

instead of Pager.php only