php sayfalama sınıfı

3 Cevap php

Herkes iyi bir PHP sayfalama sınıfı tavsiye edebilir misiniz?

Ben google arandı, ama benim gereksinimlerini karşılayan bir şey görmedim. "Benim kendi haddeleme" (ve neredeyse kesinlikle tekerleği yeniden) yerine, ben burada ilk kontrol etmeye karar verdim.

İlk bazı arka plan:

Ben Ubuntu 9.10 Tahrik ORM ile Symfony 1.3.2 kullanarak bir web sitesi geliştiriyorum. Şu anda Tamam uskur çağrı cihazı, kullanıyorum, ama son zamanlarda biraz şeyleri hızlandırmak için memcache kullanmaya başladı. O (AFAIK), sadece uskur nesnelerle çalışır gibi bu noktada, uskur çağrı cihazı, bir kullanımı vardır.

Ne gerek inci bir sınıftır: t aşağıdaki requirents karşılar

  1. Veri kaynağı (örneğin veritabanı) kayıtları almak için mantığı bir sınıf (ya da en azından ayrı bir dosya) kapsüllü böylece, endişeleri ayrılığı ile, temiz bir arayüze sahip.

  2. Nesnelerin dizilerle çalışabilir miyim

  3. Pagination bağlantılar sağlar ve yalnızca geçerli sayfa için gerekli veri getirir. Çok fazla olduğunda da, sayfalama mevcut sayfa bağlantıları 'split' olmalıdır. 1000 olası sayfa bağlantıları potansiyel varsa Örneğin, görüntülenen sayfalar İLK 2,3 .... 999 LAST gibi bir şey olmalı

  4. Aşağıdaki bağlantıları bulunmaktadır, böylece tablo sorgulanan tüm kayıtların sayısını dönebilirsiniz FIRST, (bu gereklilik aslında zaten önceki gereksinimi kaplıdır - ama sadece yeniden vurgulamak istediğimiz gibi) SON.

Onlar geçmişte başarıyla kullanmış varsa herkes, böyle bir kitaplık tavsiye edebilir misiniz?

Alternatif olarak, someobe bunun hakkında listelenen şeyleri almak için, mevcut uskur çağrı cihazı (örneğin türetilen) 'hack' olabilir - lütfen bana bildirin.

3 Cevap

Emin değilim bu tasarıyı uyacak, ancak sfPropelPager ve sfDoctrinePager hem doğrudan sfPager kullanmak ya muktedir ya da uzanmalıdır ileri / geri hareket ve belleği sağlar vb sfPager sınıfından uzatmak eğer Doktrin ve uskur gibi aynı şekilde sayfalama sağlamak elemanları sizin dizi ile yapmak.

Genellikle bu bir "standart dışı" use-case olarak görünüyor gibi, API belgelerine için kaydetmek bu konuda Symfony sitede sıfır docs var, ama API docs oldukça kapsamlı bakmak, ve ben Doktrini / örnekler uskur eminim doğru yönde size rehberlik etmek mümkün olacak!

Ben kullanarak ve gerekenleri yapmak mümkün PEAR::Pager paketi tavsiye ettik.

Sen, dinamik veri kullanıldığı ve nasıl bunu memcache ile çalışan alabilirsiniz nerede, nasıl çalıştığını anlamak aşağı sfPropelPager (veya sfPager doğrudan) koduna gerek.

Ben memecached bilmiyorum ama doğrudan kayıtları itmek önbelleğe değil mi? (: D Ben onlar çok büyük olduğunu biliyorum)

Puan Benim cevabım noktası:

1: sfPager o sfDoctrinePager ve sfPropelPager ikisi tarafından kullanılır gibi DB agnostik olan, bir çalışma ve test tabanı için kullanabilirsiniz.

2: sfPager Dizilerle çalışma ile, o başvurulan model sınıf özelliği her yerde kullanılmaz gerekir. Cf source

3 : Providing pagination links is against separation of concerns, it paginates on objects and links are generated elsewhere (view file, helper, etc.). You can display them as you want without modyfing the pager class or its descendents

4: İlk ve son erişim sfPager sınıfı tarafından sağlanmaktadır

Ben symfony vaiz gibi gelebilir biliyorum, ama bu genellikle böyle bir çerçeve ile çalışma şeyler od yoludur. Yazdığın gibi, tekerleği yeniden icat yok!