php8.0 Constructor Property Promotionを使用する

php8.0 Constructor Property Promotionを使用する

php8.0の新機能、Constructor Property Promotionを使用したサンプルコードを記述してます。

環境

  • OS  CentOS Linux release 8.0.1905 (Core)
  • php 8.0.0

Constructor Property Promotion使い方

Constructor Property Promotionを使用しないと、以下のようにオブジェクトの初期化に多くのコードが必要でした。

<?php

class Hoge {
    public int $x;
    public int $y;
    public int $z;

    public function __construct(
        int $x = 0,
        int $y = 1,
        int $z = 2,
    ) {
        $this->x = $x;
        $this->y = $y;
        $this->z = $z;
    }
}

$hoge = new Hoge;

echo $hoge->x ."\n";
// 0
echo $hoge->y ."\n";
// 1
echo $hoge->z ."\n";
// 2

Constructor Property Promotionを使用すると以下のように記述できるようになります。

<?php

class Hoge {
    public function __construct(
        public int $x = 0,
        public int $y = 1,
        public int $z = 2,
    ) {}
}

$hoge = new Hoge;

echo $hoge->x ."\n";
// 0
echo $hoge->y ."\n";
// 1
echo $hoge->z ."\n";
// 2