Traversable インターフェイス
そのクラスの中身が foreach を使用してたどれるかどうかを検出するインターフェイスです。
これは抽象インターフェイスであり、単体で実装することはできません。 IteratorAggregate あるいは Iterator を実装しなければなりません。
これは内部エンジンのインターフェイスであり、PHP スクリプト内で実装することはできません。
IteratorAggregate あるいは Iterator を使用しなければなりません。 Traversable を継承したインターフェイスを実装するときは、 implements 句の中でそのインターフェイスより前に IteratorAggregate か Iterator を指定しておきましょう。
Iterator インターフェイス
IteratorAggregate インターフェイス
外部イテレータを作成するためのインターフェイスです。
interface IteratorAggregate extends Traversable {
/* メソッド */
public getIterator(): Traversable
}
Throwable インターフェイス
参照:Error
ArrayAccess インターフェイス
Serializable インターフェイス
独自のシリアライズ用のインターフェイスです。
このインターフェイスを実装したクラスは __sleep() や __wakeup() をサポートしなくなります。 シリアライズが必要な場合には、自動的に serialize メソッドがコールされます。 このメソッドは __destruct() を実行しません。また、 メソッド内で明示的に書かない限りは一切の副作用を及ぼしません。 アンシリアライズされるときにはそのクラスが自動的に検知し、__construct() メソッドのかわりに適切な unserialize() メソッドがコールされます。 標準のコンストラクタを実行させたい場合は、unserialize() メソッドの中でそれをコールします。
interface Serializable {
/* メソッド */
public serialize(): ?string
public unserialize(string $data): void
}
Stringable インターフェイス
Stringable インターフェイスは、 特定のクラスが __toString() メソッドを実装していることを示します。
このインターフェイスの一番の存在意義は、 文字列プリミティブや、 文字列にキャストできるオブジェクトを受け入れる union型 string|Stringable に対する型チェックを、関数ができるようにすることです。
UnitEnum インターフェイス
UnitEnum インターフェイスは、 全ての列挙型に対して、PHP のエンジンが自動的に適用するものです。 ユーザー定義のクラスとして実装してはいけません。 列挙型はメソッドのオーバーライドを禁止しています。 デフォルトの実装は PHP のエンジンから提供されるからです。 このインターフェイスは、型チェックのためだけに存在しています。
BackedEnum インターフェイス
BackedEnum インターフェイスは、 Backed Enum を定義すると、PHP のエンジンが自動的に適用します。 ユーザー定義のクラスとして実装してはいけません。 列挙型はメソッドのオーバーライドを禁止しています。 デフォルトの実装は PHP のエンジンから提供されるからです。 このインターフェイスは、型チェックのためだけに存在しています。