PHP は部分型の関係を満たしつつ(behavioral subtyping)、 名前ベースで一致を調べる型システム(nominal type system) を採用しています。 部分型の関係はコンパイル時にチェックされますが、 型の検証は実行時に動的に行われます。
PHP の型システムは、様々な基本型(atomic type)をサポートしており、 それらを組み合わせてより複雑な型を作ることができます。 そうした複雑な型の一部については、 型宣言 時に記述できます。
基本型の一部は言語に強く統合されている組み込み型であり、 ユーザー定義の型として再現できません。
基本型の一覧は以下になります:
複数の基本型を組み合わせて、複合型を作ることができます。 PHP では、次のやり方で型を組み合わせることができます:
交差型 は、宣言した複数のクラス型を(単一ではなく) すべて満たす値を受け入れることができます。 交差型を構成する個別の型は、&
記号で結合します。 よって、型 T
, U
, V
の交差型は T&U&V
と書きます。
union 型は、ひとつではなく、 複数の異なる型を値として受け入れることができます。 union 型を構成する個別の型は、|
記号で結合します。 よって、型 T
, U
, V
の union 型は T|U|V
と書きます。 型のひとつが交差型の場合、DNF で記すために 括弧で囲む必要があります。 つまり、T|(X&Y)
と書く必要があります。