codeigniterのpaginationをpear pagerにした。

最近codeigniterにはまってます。。。

cakephperさんの色々なPHPフレームワークのパフォーマンスを比較を見て、
あぁ早いんだと。。

フレームワークを選ぶ場合は速度は気になります。。それこそYiiが早いのかとかZendが早いのか。。Cakeは遅いのか。。。など。
といっても、チューニング次第で如何様にもなるんでしょうけど。。。

レンタルサーバーで動かすことが多い自分にとっては、最初から軽量に越したことはありません!

実は本だけは昔買ってたんですけどね・・・・。




規約がそこまでない?からわかりやすいというか掴みやすい。

ベストプラクティスなものを求めてあ〜でもないこ〜でもないと模索して全然進まなかったり。。

本題のページングについて、デフォルトでは、

list/10とかlist/20とかDBのOffsetになるようです。

自分的には、list/?page=2とかlist/page/2とかにしたいです。

で、pearページャーにしました。

MY_pagination.phpを作成して、
https://gist.github.com/1130409


//pager
$config = array();
$config['totalItems'] = $total;
$config['perPage'] = 20;
$this->pagination->initialize($config);
$data['pagination'] = $this->pagination->create_links();

と、デフォルトと同じような記述。。ほんとはデフォルトと同じ記述もできるんでしょうけど手抜きです。。。

/list/?page=1とかになります。

実はcodeigniterは$_GETがデフォルトで無効になってるんですね。どのタイミングで破棄してるかはまだ突っ込んでないですが。
ただ、
$_SERVER['QUERY_STRING']
は有効とのこと。

なので、config.php

$config['uri_protocol'] = 'PATH_INFO';


にして、ページ番号を取得するときは、

$page = $this->pagination->get_page_num();


と、しました。。


$config['enable_query_strings'] = false;

にすれば$_GETとれるじゃ?と思いって試しましたが、pageのリンクが/?/list/?page=2とか、先頭に?が何故かついくのでとりあえず保留に。
そもそもあえてTRUEにするにはリスクが高そうでもありますし。。。。