スカラー型¶
スカラー¶
int、bool、float、string はスカラー型の例です。スカラー型はPHPのスカラー値を表します。これらの型はPHP 7でも有効な型です。
scalar 型はすべてのスカラー型のスーパータイプです。
int-range¶
整数範囲は、ジェネリック構文を使用して指定された範囲内の整数を示します:int<x, y>
x と y は整数である必要があります。
x は min を使用して PHP_INT_MIN を示すこともでき、y は max を使用して PHP_INT_MAX を示すこともできます。
例:
int<-1, 3>int<min, 0>int<1, max>(positive-intと同等)int<0, max>(non-negative-intと同等)int<min, -1>(negative-intと同等)int<min, 0>(non-positive-intと同等)int<min, max>(intと同等)
int-mask<1, 2, 4>¶
パラメータのビットマスク組み合わせの結果である型を表します。
int-mask<1, 2, 4> は 0|1|2|3|4|5|6|7 に対応します。
int-mask-of<MyClass::CLASS_CONSTANT_*>¶
パラメータのビットマスク組み合わせの結果である型を表します。
これは int-mask と同じ概念ですが、この型はコード内の定数への参照とともに使用されます:int-mask-of<MyClass::CLASS_CONSTANT_*> は、値が1、2、4の CLASS_CONSTANT_{A,B,C} という3つの定数がある場合、0|1|2|3|4|5|6|7 に対応します。
array-key¶
array-key は int と string のスーパータイプです(ただし、ユニオンではありません)。
numeric¶
numeric は int または float と numeric-string のスーパータイプです。
class-string, interface-string¶
Psalmは MyClass::class 定数のための特別なメタ型 class-string をサポートしており、これは string が使用できるどこでも使用できます。
例えば、string パラメータ $class_name を持つ関数があるとき、アノテーション @param class-string $class_name を使用して、その位置に常に ::class 定数が渡されることをPsalmに確認させることができます:
takesClassName("A"); は TypeCoercion の問題を引き起こしますが、takesClassName(A::class) は問題ありません。
また、class-string をオブジェクト名でパラメータ化することもできます。例:class-string<Foo>。これは、一致する型が Foo のクラス文字列またはその子孫のいずれかでなければならないことをPsalmに伝えます。
trait-string¶
Psalmは存在するトレイトを示す trait-string アノテーションもサポートしています。
enum-string¶
Psalmは存在する列挙型を示す enum-string アノテーションもサポートしています。
callable-string¶
callable-string は is_callable チェックを通過した文字列値を示します。
numeric-string¶
numeric-string は is_numeric チェックを通過した文字列値を示します。
literal-string¶
literal-string はアプリケーション内の文字列のみで構成される文字列値を示します。
例:
"hello " . "world""hello " . Person::DEFAULT_NAMEimplode(', ', ["one", "two"])implode(', ', [1, 2, 3])"hello " . <another literal-string>
このタイプチェックを通過しない文字列:
file_get_contents("foo.txt")$_GET["foo"]"hello " . $_GET["foo"]
literal-int¶
literal-int はアプリケーション内のリテラル整数のみで構成される整数値を示します。
例:
1212+42
このタイプチェックを通過しない整数:
(int) file_get_contents("foo.txt")(int) $_GET["foo"]((int)$_GET["foo"]) + 2
lowercase-string, non-empty-string, non-empty-lowercase-string¶
空でない文字列、小文字の文字列、または両方を同時に表します。
ここでの empty は空文字列 '' を除くすべての文字列として定義されています。別の型 non-falsy-string は事実上 non-empty-string のサブタイプであり、文字列値 '0' も除外します。