最近のPHPDocでの型の書き方
最近のPHPDocでの型の書き方が覚えられないので、まとめておきます。
配列
キーと値の型
キーがTKey、値がTValue:
/**
* @param array<TKey, TValue> $array
*/
キーがint、値がstring:
/**
* @param array<int, string> $array
*/
キーがint、値がint:
/**
* @param array<int, int> $array
*/
[10 => 100, 20 => 200, 30 => 300] のような配列で要素数は不明。
オブジェクトっぽい配列
以下の配列の場合、
$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
*/
以下の配列は、どちらも同じで、int の要素が 2つの [10, 20] のような配列です。
/**
* @param array{0: int, 1: int} $array1
* @param array{int, int} $array2
*/
リスト
リストとはキーが 0 から始まる連番の配列です。array_is_list() で true となる配列です。
/**
* @param list<string> $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
*/
ジェネリクス
/**
* @template T
* @param T $a
* @return T
*/
function foo($a)
{
return $a;
}
引数 $a の型は T(型変数)で、返り値の型は引数と同じになります。
参考
Date: 2021/03/10



![徹底攻略PHP5技術者認定[上級]試験問題集 [PJ0-200]対応 徹底攻略PHP5技術者認定[上級]試験問題集 [PJ0-200]対応](http://tatsu-zine.com/images/books/164/cover_s.jpg)

