PHP デザイン パターンの話: イテレータ パターン_PHP チュートリアル
今日の「PHP デザイン パターン」シリーズの主役は、非常に一般的なプロセス、つまりオブジェクト グラフの未知の部分にあるオブジェクト (またはスカラー) のセットの反復に関する抽象化を提供する Iterator パターンです。反復は、配列プロパティ、コレクション オブジェクト、配列、さらにはクエリ結果セットの反復など、いくつかの異なる方法で実行できます。
オブジェクトの世界では、イテレータ パターンは配列のような機能を維持し、非侵入的なオブジェクト ファセットとしてみなされる必要があり、多くの場合、クライアント クラスはイテレータ インターフェイスを参照して実際のオブジェクト実装から分離されます。可能な限り、将来変更される可能性のある具体クラスまたは抽象クラスの代わりに、イテレータへの参照を渡すことができます。
図 1 イテレータ パターン
参加者:
◆クライアント: イテレータ パターンを参照するメソッドは、一連の値またはオブジェクトに対してループを実行します。
◆Iterator (イテレーター): next()、isFinished()、current() などのメソッドを含む、反復プロセスの抽象化。
◆ConcreteIterators: 配列、ツリー、組み合わせ、コレクションなどの特定のオブジェクトのセットに反復を実装します。
Traversable インターフェイスを通じて、PHP はイテレーター モードをネイティブにサポートします。このインターフェイスは、Iterator と IteratorAggregate によって拡張され、一連の標準メソッドを定義するだけでなく、各 Traversable オブジェクトをそのまま foreach () に渡すことができます。 foreach はイテレータのメイン クライアントであり、Iterator 実装は実際のイテレータであり、IteratorAggregate は他の役割を持つ Traversable オブジェクトであり、 getIterator() メソッドを通じて Iterator を返します。
標準 PHP ライブラリは、PHP にバンドルされている唯一の汎用オブジェクト指向ライブラリであり、追加のインターフェイスとパブリック クラスを定義します。 OuterIterator 実装は、Iterator を装飾します。CachingIterator と LimitIterator は、このインターフェイスの 2 つの例です。
RecursiveIterator は、ツリー構造用に実装された Iterator インターフェイスの拡張機能であり、反復内の現在の要素のサブオブジェクトが存在するかどうかを確認する一連の追加メソッドを定義します。 RecursiveArrayIterator および RecursiveDirectoryIterator は、このインターフェイスの実装の例です。これらのタイプのイテレータは、そのまま使用することも、RecursiveIteratorIterator を使用して通常のイテレータ コントラクトにブリッジすることもできます。このOuterIterator実装は、構築パラメータに応じて深さ優先または幅優先のトラバーサルを実行します。
RecursiveIteratorIterator を使用する場合は、それを foreach に渡すことができます。RecursiveIterator とそのスーパーセット Iterator のさまざまな使用法を理解するには、次のコード例を参照してください。最後に、SeekableIterators は、seek() メソッドをコントラクトに追加します。このメソッドは、Iterator の内部状態を特定の反復ポイントに移動するために使用できます。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

昨年Huawei Mate60シリーズが発売されて以来、個人的にはMate60Proをメインで使っています。ほぼ1年の間に、Huawei Mate60Proは複数のOTAアップグレードを受け、全体的なエクスペリエンスが大幅に向上し、人々に常に新しい感覚を与えました。たとえば、最近、Huawei Mate60 シリーズは再びイメージング機能の大幅なアップグレードを受けました。 1 つ目は、新しい AI 除去機能で、通行人やゴミをインテリジェントに除去し、空白領域を自動的に埋めることができます。2 つ目は、メインカメラの色の精度と望遠の鮮明さが大幅に向上しました。新学期シーズンであることを考慮して、Huawei Mate60シリーズは秋のプロモーションも開始しました。携帯電話の購入時に最大800元の割引が受けられ、開始価格は4,999元という低価格です。よく使われる、価値の高い新製品が多い
