1

誰かが良いPHPページングクラスをお勧めできますか?

私はグーグルを検索しましたが、私の要件に一致するものは何も見ていません。「自分で転がす」(そしてほぼ確実に車輪の再発明をする)のではなく、最初にここにチェックインすることにしました。

最初のいくつかの背景:

Ubuntu9.10でPropelORMを使用してSymfony1.3.2を使用してWebサイトを開発しています。私は現在Propelページャーを使用していますが、これは問題ありませんが、最近memcacheを使用して少しスピードアップし始めました。この時点では、Propelページャーはほとんど役に立ちません。Propelページャー(AFAIK)は、Propelオブジェクトでのみ機能するためです。

私が必要としているのは、次の要件を満たすクラスです。

  1. データソース(データベースなど)からレコードを取得するロジックがクラス(または少なくとも別のファイル)にカプセル化されるように、関心の分離を備えたクリーンなインターフェイスを備えています。

  2. オブジェクトの配列を操作できます

  3. ページ付けリンクを提供し、現在のページに必要なデータのみをフェッチします。また、ページ数が多すぎる場合は、利用可能なページリンクを「分割」する必要があります。たとえば、1000の可能性のあるページリンクがある場合、表示されるページはFIRST 2,3 ....999LASTのようになります。

  4. クエリ対象のテーブル内のすべてのレコードの数を返すことができるため、次のリンクがFIRST、LASTで利用可能になります(この要件は実際には前の要件ですでにカバーされていますが、もう一度強調したかっただけです)。

過去に成功裏に使用したことがある場合、誰かがそのようなライブラリを推奨できますか?

あるいは、someobeが現在のPropelページャーを「ハッキング」した(たとえば、派生した)可能性があります。これにより、私がリストしたことを実行できるようになります。お知らせください。

4

3 に答える 3

2

これがうまくいくかどうかはわかりませんが、sfPropelPager と sfDoctrinePager の両方が、前後の動きやページングなどを提供するsfPagerクラスから拡張されています。sfPager を直接使用するか、Doctrine と同じ方法で拡張することができるはずです。 Propel は要素の配列を処理してページングを提供します。

通常、これは「非標準」のユースケースのように見えるため、Symfony サイトには API ドキュメントを除いてドキュメントはありませんが、API ドキュメントはかなり包括的に見えます。Doctrine/Propel の例は確かですあなたを正しい方向に導くことができるでしょう!

于 2010-03-17T11:35:54.887 に答える
0

私はこれまで使用してきましたが、必要なことを実行できるPEAR::Pagerパッケージをお勧めします。

于 2010-03-17T10:50:46.953 に答える
0

sfPropelPager (または直接 sfPager) のコードを掘り下げて、内部でどのように動作するか、動的データが使用される場所、および memcache で動作させる方法を理解する必要があります。

memecached はわかりませんが、propel レコードを直接キャッシュできませんか? (私は彼らが巨大であることを知っています:D)

ポイントごとの私の答え:

1 : sfPager は sfDoctrinePager と sfPropelPager の両方で使用されるため、DB に依存しません。作業およびテスト済みのベースとして使用できます。

2 : sfPager は配列で動作する必要があります。その中で参照されているモデル クラス プロパティはどこにも使用されていません。Cfソース

3 : ページネーション リンクを提供することは、関心の分離に反します。オブジェクトのページネーションが行われ、別の場所 (ビュー ファイル、ヘルパーなど) でリンクが生成されます。ページャークラスまたはその子孫を変更せずに、必要に応じて表示できます

4 : 最初と最後のアクセスは sfPager クラスによって提供されます

私は symfony の説教者のように聞こえるかもしれませんが、これは通常、そのようなフレームワークで作業する方法です。あなたが書いたように、車輪を再発明しないでください!

于 2010-03-17T12:27:33.670 に答える