🐘
最近のPHPDocでの型の書き方
最近の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-keyはintとstringのスーパータイプです。
/**
* @param array-key $key
*/
正の整数
/**
* @param positive-int $positiveInt
*/
クラス文字列
/**
* @param class-string $classname
*/
型を指定することもできます。
/**
* @param class-string<A> $classname
*/
callable文字列
/**
* @param callable-string $callable
*/
Discussion