型システム
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)
と書く必要があります。