Programmer's Reference Guide
| 設定 |
高度な使用法
独自のデータソースアダプタ
同梱のアダプタでは対応していないようなデータ形式を処理したくなることもあるでしょう。 そんな場合は自分でアダプタを書く必要があります。
そのためには
Zend_Paginator_Adapter_Interface
を実装しなければなりません。このインターフェイスでは
2 つのメソッドが必須となっています。
-
count()
-
getItems($offset, $itemCountPerPage)
さらに、コンストラクタを実装してそのパラメータでデータソースを受け取り、 protected あるいは private なプロパティにそれを保存する処理も作りたくなることでしょう。 これをどのように実装するかはあなた次第です。
これまでに SPL の
» Countable
インターフェイスを使ったことがある方なら
count() はおなじみでしょう。
Zend_Paginator と組み合わせて使う場合、
これはデータコレクション内の項目総数を返します。
getItems() メソッドは、ほんの少しだけ複雑です。
これは、オフセットおよび 1 ページあたりの項目数を受け取ります。
それにあわせて適切なデータを返す必要があります。
配列の場合はこのようになるでしょう。
return array_slice($this->_array, $offset, $itemCountPerPage);
同梱のアダプタ (すべて Zend_Paginator_Adapter_Interface
を実装しています) を見れば、
自分のアダプタでこれをどのように実装すればいいのか参考になるでしょう。
独自のスクロール形式
独自のスクロール形式を作成するには
Zend_Paginator_ScrollingStyle_Interface
を実装しなければなりません。このインターフェイスには
getPages() メソッドが定義されています。
public function getPages(Zend_Paginator $paginator, $pageRange = null);
このメソッドは、いわゆる "ローカル" ページ (現在のページの周辺のページたち) の範囲のページの最小値・ 最大値を計算しなければなりません。
他のスクロール形式を継承している (たとえば
Zend_Paginator_ScrollingStyle_Elastic)
のでない限り、自作のスクロール形式は必ずといっていいほど
次のようなコードで終わることになるでしょう。
return $paginator->getPagesInRange($lowerBound, $upperBound);
このコールには特別な意味はありません。 単に最小値と最大値の妥当性をチェックして、 その範囲の配列を返しているだけです。
新しいスクロール形式が用意できたら、どのディレクトリからそれを探すのかを
Zend_Paginator に通知する必要があります。
そのためには、次のようにします。
$prefix = 'My_Paginator_ScrollingStyle';
$path = 'My/Paginator/ScrollingStyle/';
Zend_Paginator::addScrollingStylePrefixPath($prefix, $path);
| 設定 |
