型システム

PHP は部分型の関係を満たしつつ(behavioral subtyping)、 名前ベースで一致を調べる型システム(nominal type system) を採用しています。 部分型の関係はコンパイル時にチェックされますが、 型の検証は実行時に動的に行われます。

PHP の型システムは、様々な基本型(atomic type)をサポートしており、 それらを組み合わせてより複雑な型を作ることができます。 そうした複雑な型の一部については、 型宣言 時に記述できます。

基本型

基本型の一部は言語に強く統合されている組み込み型であり、 ユーザー定義の型として再現できません。

基本型の一覧は以下になります:

複合型

複数の基本型を組み合わせて、複合型を作ることができます。 PHP では、次のやり方で型を組み合わせることができます:

  • (インターフェイスやクラスの)交差型
  • union 型

交差型

交差型 は、宣言した複数のクラス型を(単一ではなく) すべて満たす値を受け入れることができます。 交差型を構成する個別の型は、& 記号で結合します。 よって、型 T, U, V の交差型は T&U&V と書きます。

union 型

union 型は、ひとつではなく、 複数の異なる型を値として受け入れることができます。 union 型を構成する個別の型は、| 記号で結合します。 よって、型 T, U, V の union 型は T|U|V と書きます。 型のひとつが交差型の場合、DNF で記すために 括弧で囲む必要があります。 つまり、T|(X&Y) と書く必要があります。

型のエイリアス

PHP は型のエイリアスをふたつサポートしています。 mixediterable です。 それぞれ、 union 型 object|resource|array|string|float|int|bool|null と、Traversable|array に対応します。

注意: PHP は、ユーザー定義の型のエイリアスはサポートしていません。