PHPStan 0.12.84 で Local type aliases の機能が実装されたようだ。
元々、型のエイリアスの機能はあったんだけど、グローバル設定だった。
それがクラス用に定義できるようになったみたいだ。
/**
* @phpstan-type UserAddress array{street: string, city: string, zip: string}
*/
class User
{
/**
* @var UserAddress
*/
private $address; // is of type array{street: string, city: string, zip: string}
}
/**
* @phpstan-import-type UserAddress from User
*/
class Order
{
/** @var UserAddress */
private $deliveryAddress; // is of type array{street: string, city: string, zip: string}
}
今から新しく作るプログラムで使う必要はないけど、古いプログラムで配列を多用していて型チェックできないと困っている場合には有効そうだ。