Skip to content

スカラー型

スカラー

intboolfloatstring はスカラー型の例です。スカラー型はPHPのスカラー値を表します。これらの型はPHP 7でも有効な型です。 scalar 型はすべてのスカラー型のスーパータイプです。

int-range

整数範囲は、ジェネリック構文を使用して指定された範囲内の整数を示します:int<x, y>
xy は整数である必要があります。
xmin を使用して PHP_INT_MIN を示すこともでき、ymax を使用して 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-keyintstring のスーパータイプです(ただし、ユニオンではありません)。

numeric

numericint または floatnumeric-string のスーパータイプです。

class-string, interface-string

Psalmは MyClass::class 定数のための特別なメタ型 class-string をサポートしており、これは string が使用できるどこでも使用できます。

例えば、string パラメータ $class_name を持つ関数があるとき、アノテーション @param class-string $class_name を使用して、その位置に常に ::class 定数が渡されることをPsalmに確認させることができます:

<?php
class A {}

/**
 * @param class-string $s
 */
function takesClassName(string $s) : void {}

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-stringis_callable チェックを通過した文字列値を示します。

numeric-string

numeric-stringis_numeric チェックを通過した文字列値を示します。

literal-string

literal-string はアプリケーション内の文字列のみで構成される文字列値を示します。

例:

  • "hello " . "world"
  • "hello " . Person::DEFAULT_NAME
  • implode(', ', ["one", "two"])
  • implode(', ', [1, 2, 3])
  • "hello " . <another literal-string>

このタイプチェックを通過しない文字列:

  • file_get_contents("foo.txt")
  • $_GET["foo"]
  • "hello " . $_GET["foo"]

literal-int

literal-int はアプリケーション内のリテラル整数のみで構成される整数値を示します。

例:

  • 12
  • 12+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' も除外します。

ユーザーノート