Type Hintingに複数の型を同時に満たすものを指定できるようになった。
下記の例のようにinstance of などでエラーチェックが省ける。
大規模な開発をする際にには役立つような気がする。
<?php
interface IStatus{
function getStatus():int;
function setStatus(int $stat):void;
}
class StatusBase{
protected int $status = 1;
public function getStatus():int{
return $this->status;
}
}
class ServerStatus extends StatusBase implements IStatus{
public function setStatus(int $stat):void{
$this->status = $stat;
}
}
class ServerHealth extends StatusBase{
}
// StatusBaseかつIStatusという型のみ受け付ける
function intersection_types_test(StatusBase&IStatus $stat){
$stat->setStatus(random_int(0,255));// instance ofなどの型チェック不要で実行できる
echo $stat->getStatus().PHP_EOL;
}
$ss = new ServerStatus();
$sh = new ServerHealth();
intersection_types_test($ss);// 1
intersection_types_test($sh);// Fatal error: Uncaught TypeError: