PHPのTraversableインターフェイスとは?特徴と使い方を解説
はじめに
TraversableはPHPにおける抽象インターフェイス(abstract interface)であり、そのためクラスが直接実装(implements)することはできません。一般的には、Traversableを継承しているIteratorインターフェイスまたはIteratorAggregateインターフェイスを実装し、そのクラスがforeach構文で走査(トラバース)可能かどうかを判定するために使われます。
一方で、このインターフェイスを実装している一部の組み込みクラスは、Iterator系インターフェイスを明示的に実装していなくても、foreachループでそのまま使用することができます。
また、Traversableは抽象インターフェイスであるため、内部にメソッドを一切持ちません。あくまで「foreachで走査できるか」を示す型チェック用のマーカー的な役割を果たします。
構文
Traversable {
//
}Traversableを継承しているIteratorAggregateやIteratorインターフェイスを実装する場合、これらのインターフェイス名はimplements句の中で、クラス名よりも先に記述する必要があります。
まとめ
Traversableは直接実装できない抽象インターフェイスですが、instanceofによる型チェックなどで「オブジェクトがforeachで反復処理可能か」を判定する際に重要な役割を担います。独自の反復処理を実装したい場合は、IteratorまたはIteratorAggregateを使うのが基本となります。
-
PHPのポリモーフィズムとは?インターフェースを使った実装例で解説
ポリモーフィズムとは何か ポリモーフィズム(Polymorphism)は、ギリシャ語の「Poly(多数の)」と「morphism(形)」に由来する言葉で、直訳すると「多くの形」という意味になります。 オブジェクト指向プログラミングにおけるポリモーフィズムとは、異なるクラスに属していても、似たような処理を行うメソッドには同じ名前を付けるべきだという設計原則のことです。これはOOP(オブジェクト指向プログラミング)の基本的なパターンの一つであり、機能の異なる複数のクラスが共通のインターフェースを実行・共有することを可能にします。 この原則の大きな利点は、コードがどのクラスに属しているかを呼び出し側
-
PHPのinterface_exists()関数とは?使い方とサンプルコードを解説
interface_exists()関数は、指定したインターフェースがすでに定義されているかどうかを確認するためのPHP組み込み関数です。name_of_interfaceで指定されたインターフェースが定義済みであればTRUEを返し、未定義であればFALSEを返します。 基本構文 interface_exists(name_of_interface, autoload) パラメータ name_of_interface − 存在を確認したいインターフェース名(文字列で指定)。 autoload − __autoload(またはSPLオートローダー)を呼び出すかどうか。デフォルトはtrueです。