🐘

最近のPHPDocでの型の書き方

2021/03/10に公開

最近のPHPDocでの型の書き方が覚えられないので、まとめておきます。

配列

キーと値の型

キーがTKey、値がTValue

/**
 * @param array<TKey, TValue> $array
 */

キーがint、値がstring

/**
 * @param array<int, string> $array
 */

オブジェクトっぽい配列

以下の配列の場合、

$array = ["hello", "world", "foo" => new stdClass, 28 => false];

以下のように書きます。

/**
 * @param array{0: string, 1: string, foo: stdClass, 28: false} $array
 */

オプションのキーには?を最後に付けます。

/**
 * @param array{optional?: string, bar: int} $array
 */

スカラー

配列のキー

array-keyintstringのスーパータイプです。

/**
 * @param array-key $key
 */

正の整数

/**
 * @param positive-int $positiveInt
 */

クラス文字列

/**
 * @param class-string $classname
 */

型を指定することもできます。

/**
 * @param class-string<A> $classname
 */

callable文字列

/**
 * @param callable-string $callable
 */

参考

Discussion