PhpStormの擬似ジェネリクス
ジェネリクスをサポートする型チェッカーではArrayObject<DateTime>のように記述できます。
しかし、残念ながら過去(2021年以前)の古いPhpStormはこの形式の型表記をサポートしていませんでした。
code:php
/**
* @return ArrayObject|DateTime[]
*/
function get_datetimes(): ArrayObject
{
return new DateTime;
}
$datetimes = get_datetimes();
foreach ($datetimes as $datetime) {
$datetime->▌
}
$datetimes->▌
▌の位置で補完を開始すると、上はDateTimeのメソッドが、下はArrayObjectのメソッドがサジェストされます
#T[]型 がarrayを返すという意味である以上、この型は嘘です。
かつては、「PhpStormユーザーが多い環境ではこう書かざるを得ない… ぐぬぬ…」という状況でした。
以上の理由から、これは2021年頃まで使われていたバッドノウハウです。
現在のPhpStorm(2021.2移行)は問題なくサポートしていますので、大手を振って ArrayObject<DateTime> とか iterable<DateTime> とか書くようにしてみてください