Traversableは、PHPの組み込みインターフェイスです。メソッドは定義されていませんが、単なるタグインターフェイスであり、インターフェイスを実装するクラスがトラバーサル操作に使用できることを示しています。
トラバース可能なインターフェイス自体は、関数を直接提供しません。その機能は、トラバーサル中に使用できる特定のクラスをマークすることです。 PHPのforeachステートメントは、このインターフェイスに依存して、アレイまたはオブジェクトをトラバースに依存しています。クラスが横断可能なインターフェイスを実装すると、foreachステートメントで横断することができます。
トラバー可能なインターフェイスを使用するには、カスタムクラスに実装する必要があります。このインターフェイスを実装するクラスは、Foreachステートメントで直接使用できます。簡単な例を次に示します。
class MyIterator implements Traversable {
private $items = [];
public function __construct(array $items) {
$this->items = $items;
}
public function getItems() {
return $this->items;
}
}
$iterator = new MyIterator([1, 2, 3]);
foreach ($iterator as $item) {
echo $item . ' ';
}
// Output: 1 2 3
この例では、Myiteratorクラスはトラバー可能なインターフェイスを実装し、GetItemsメソッドを提供して要素をトラバースにします。 Foreachステートメントでは、Myiteratorオブジェクトの要素を直接反復させることができます。
トラバー可能なインターフェイスに加えて、Iteratorインターフェイスと呼ばれるPHPには非常に一般的に使用されるインターフェイスもあります。 Traversableは、Iteratorインターフェイスの親インターフェイスであることは注目に値します。したがって、Iteratorインターフェイスを実装するクラスは、トラバー可能なインターフェイスも実装する必要があります。
Iterator Interfaceは、現在、キー、次へ、巻き戻し、有効など、必要なトラバーサル方法を定義します。これらの方法は、トラバーサル動作を定義し、ターバーター内の要素に順番にアクセスできるようにします。
通常、カスタムクラスでは、トラバース可能なインターフェイスとイテレータインターフェイスの両方を実装し、Iteratorインターフェイスメソッドに特定のトラバーサルロジックを実装します。このようにして、現在、キーなどのPHPが提供する内蔵イテレーター関数を使用して、トラバーサル操作を簡素化できます。
トラバー可能なインターフェイスは、PHPの重要なインターフェイスです。これは、このインターフェイスを実装するクラスがforeachステートメントによって移動できることを確認するためのマーカーインターフェイスとして機能します。トラバース可能なインターフェイス自体は機能を提供しませんが、トラバーサルクラスにとって重要な識別子です。実際の開発では、Iteratorインターフェイスを一緒に使用すると、クラスのトラバーサル動作がより柔軟で読みやすくなります。