デフォルト値の初期化にnew演算子を使えるようになった。
おかげでこういうコードが書けるようになった。もちろんコンストラクタ以外でも使える。
class InitSample{
public function __construct(protected DateTime $time = new DateTime('now',new DateTimeZone('UTC'))){
$this->time = $time;
}
public function getTimeString():string{
return $this->time->format('Y-m-d H:i:s');
}
public function tmpTime(DateTime $tmpTime = new DateTime('now',new DateTimeZone('UTC'))):string{
return $tmpTime->format('Y-m-d H:i:s');
}
}
$dt = new InitSample();// now
echo $dt->getTimeString().PHP_EOL;// 2021-12-04 10:31:10
sleep(1);
echo $dt->tmpTime().PHP_EOL;// 2021-12-04 10:31:11
echo $dt->getTimeString().PHP_EOL;// 2021-12-04 10:31:10
個人的にはstatic::$fooやstatic::FOOが使えるようになってほしいなとおもうものの、
これがあるだけでもだいぶ書きやすい。