ここで、非常に便利な Zend Framework ページング クラスを共有したいと思います
具体的な効果は、このサイトのページング効果に見られます。CSS スタイルは、個人のデザインセンスに応じて変更できます。
ここでは、このクラスの使用方法を示す例を次のように示します。
IndexController.php、Action に次のコードを記述します:
; const PERPAGENUM = 4 //各ページに表示されるアイテムの数
;
パブリック関数indexAction()
{
// $this->_blogModel がブログ Model をインスタンス化しました
// $rows -> 表示されているデータの総エントリ数を取得します
$rows = $this->_blogModel->getTotalRows();
If($pageNum = $this->getRequest()->getParam('page')) {
//値が渡された場合、最初の最初のページを上書きします
$this->_curPage = $pageNum;
}
//データテーブルのデータをフロントエンドに送信
$this->view->blogInfo = $this->_blogModel->getBlogInfo(
) 持っている );
//ページングクラスをインスタンス化してフロントエンドに渡します
$this->view->pagebar = $this->displayPageBar($rows);
}
プライベート関数displayPageBar($totalRows)
{
$Pager = new Zend_Pagination($totalRows,self::PERPAGENUM);
$Pager->getNavigation();
を返す }
Return $this->fetchAll('1 = 1', 'blog_id desc', $perPageNum, $limit)
->toArray();
}
パブリック関数 getTotalRows($where = '1=1')
{
$this->fetchAll($where)->count();
を返す }
コードをコピーします
クラス Zend_Pagination
{
Private $_navigationItemCount = 6 //ナビゲーション バーにはナビゲーション ページの総数が表示されます
; Private $_pageSize = null //ページごとのアイテム数
; private $_align = "right" // ナビゲーションバーの表示位置
; Private $_itemCount = null //アイテムの総数
; Private $_pageCount = null //総ページ数
; Private $_currentPage = null //現在のページ
; private $_front = null //フロントエンドコントローラー
; Private $_PageParaName = "ページ" // ページパラメータ名
;
Private $_firstPageString = "| Private $_nextPageString = ">>" //ナビゲーションバーの前のページに表示される文字
; Private $_previousPageString = "; Private $_lastPageString = ">>|" //ナビゲーションバーの最後のページに表示される文字
; Private $_splitString = " | " //ページ番号間の区切り文字
;
パブリック関数 __construct($itemCount, $pageSize)
{
If (!is_numeric($itemCount) || (!is_numeric($pageSize))) {
新しい例外をスローします("ページネーション エラー: 数値ではありません");
}
$this->_itemCount = $itemCount;
$this->_pageSize = $pageSize;
$this->_front = Zend_Controller_Front::getInstance();
$ this-> $page = $this->_front->getRequest()->getParam($this->_PageParaName);
If (empty($page) || (!is_numeric($page))) {
// 空か数値ではない場合、現在のページを 1 に設定します
$this->_currentPage = 1;
} else {
if ($page $page = 1;
}
If ($page > $this->_pageCount) {
$page = $this->_pageCount;
}
$this->_currentPage = $page;
}
}
パブリック関数 getCurrentPage()
{
return $this->_currentPage;
}
パブリック関数 getNavigation()
{
$navigation = '
// 現在のページはどの列にありますか? $pageCote = ceil($this->_currentPage / ($this->_navigationItemCount - 1)) - 1; //合計ページング列
$pageCoteCount = ceil($this->_pageCount / ($this->_navigationItemCount - 1));
// ページングバーの開始ページ
$pageStart = $pageCote * ($this->_navigationItemCount -1) + 1; $pageEnd = $pageStart + $this->_navigationItemCount - 1; $pageEnd = $pageStart + $this->_navigationItemCount - 1;
If($this->_pageCount $pageEnd = $this->_pageCount;
}
$navigation .= "合計: {$this->_itemCount} アイテム 合計 {$this->_pageCount} ページ n ";
if($ pagecote> 0){ $navigation .= '$this->_firstPageString }
If($this->_currentPage != 1) { //前のページへのナビゲーション
$navigation .= '$this->_previousPageString }その他{
$navigation .= $this->_previousPageString . }
($ pagestart< = $ pageend) {
If ($pageStart == $this->_currentPage) {
$navigation .= "$pageStart" . } else {
$navigation .= ' . $this->createHref($this->_currentPage+1)
. " \"="">$this->_nextPageString ";
}else{
$navigation .= $this->_nextPageString;
}
if ($pageCote $navigation .= '$this->_lastPageString ";
}
$navigation .= ' 到 ';
$navigation .= " 页
$navigation を返します;
}
パブリック関数 getNavigationItemCount()
{
return $this->_navigationItemCount;
}
パブリック関数 setNavigationItemCoun($navigationCount)
{
if(is_numeric($navigationCount)) {
$this->_navigationItemCount = $navigationCount;
}
}
パブリック関数 setFirstPageString($firstPageString)
{
$this->_firstPageString = $firstPageString;
}
パブリック関数 setPreviousPageString($previousPageString)
{
$this->_previousPageString = $previousPageString;
}
パブリック関数 setNextPageString($nextPageString)
{
$this->_nextPageString = $nextPageString;
}
パブリック関数 setLastPageString($lastPageString)
{
$this->_lastPageString = $lastPageString;
}
パブリック関数 setAlign($align)
{
$align = strto lower($align);
if ($align == "中心") {
$this->_align = "中心";
elseif ($align == "右") {
$this->_align = "右";
} その他 {
$this->_align = "左";
}
}
パブリック関数 setPageParamName($pageParamName)
{
$this->_PageParaName = $pageParamName;
}
パブリック関数 getPageParamName()
{
$this->_PageParaName を返す;
}
プライベート関数 createHref($targetPage = null)
{
$params = $this->_front->getRequest()->getParams();
$module = $params["モジュール"];
$controller = $params["コントローラー"];
$action = $params["アクション"];
$targetUrl = $this->_front->getBaseUrl()
。 "/$モジュール/$コントローラー/$アクション";
foreach ($params as $key => $value)
{
if($key != "コントローラー" && $key != "モジュール"
&& $key != "アクション" && $key != $this->_PageParaName) {
$targetUrl .= "/$key/$value";
}
}
If (isset($targetPage)) { //対象ページを指定
$targetUrl .= "/$this->_PageParaName/$targetPage";
} else {
$targetUrl .= "/$this->_PageParaName/";
}
return $targetUrl;
}
}
これは Mysql の制限オフセットの簡単なレビューです
データベース テーブル blog に 13 個のデータがあるとします。
ステートメント 1: ブログの制限 9、4 から * を選択します
ステートメント 2: ブログ制限 4 オフセット 9 から * を選択します
//ステートメント 1 と 2 は両方ともテーブル blog の行 10、11、12、および 13 を返します
//ステートメント 1 の 9 は、テーブルの 10 行目から開始して 4 行を返すことを意味します
//ステートメント 2 の 4 は 4 行を返すことを意味し、オフセット 9 はテーブルの 10 行目から開始することを意味します
次のステートメントはページング効果を示しています:
ステートメント 3: select * from blog limit ($this->_curPage - 1)* self::PERPAGENUM, self::PERPAGENUM;
ステートメント 4: select * from ブログ制限 self::PERPAGENUM offset ($this->_curPage - 1) * self::PERPAGENUM;

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

PHPは、特にWeb開発の分野で、最新のプログラミングで強力で広く使用されているツールのままです。 1)PHPは使いやすく、データベースとシームレスに統合されており、多くの開発者にとって最初の選択肢です。 2)動的コンテンツ生成とオブジェクト指向プログラミングをサポートし、Webサイトを迅速に作成および保守するのに適しています。 3)PHPのパフォーマンスは、データベースクエリをキャッシュおよび最適化することで改善でき、その広範なコミュニティと豊富なエコシステムにより、今日のテクノロジースタックでは依然として重要になります。

PHPでは、弱い参照クラスを通じて弱い参照が実装され、ガベージコレクターがオブジェクトの回収を妨げません。弱い参照は、キャッシュシステムやイベントリスナーなどのシナリオに適しています。オブジェクトの生存を保証することはできず、ごみ収集が遅れる可能性があることに注意する必要があります。

\ _ \ _ Invokeメソッドを使用すると、オブジェクトを関数のように呼び出すことができます。 1。オブジェクトを呼び出すことができるように\ _ \ _呼び出しメソッドを定義します。 2。$ obj(...)構文を使用すると、PHPは\ _ \ _ Invokeメソッドを実行します。 3。ロギングや計算機、コードの柔軟性の向上、読みやすさなどのシナリオに適しています。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

Dreamweaver Mac版
ビジュアル Web 開発ツール
