Description

Introduced in PHP 8.0, constructor property promotions1 add new syntatctic sugar to create value & data transfer objects.

Syntax

class Money
{
    public Currency $currency;
 
    public int $amount;
 
    public function __construct(
        Currency $currency,
        int $amount,
    ) {
        $this->currency = $currency;
        $this->amount = $amount;
    }
}

can be replaced with

class Money
{
    public function __construct(
        public Currency $currency,
        public int $amount,
    ) {}
}

Footnotes

Footnotes

  1. https://wiki.php.net/rfc/constructor_promotion