Promocja konstruktora to bardzo fajna sztuczka w programowaniu obiektowym PHP, pozwalająca nam uprościć nasz kod. Warto ją poznać i stosować.

Oto nasza przykładowa klasa reprezentująca URL i kod przekierowania:

class URL {
    public $url;
    public $response_code;
    public function __construct($url, $response_code=302)
    {
        $this->url = $url;
        $this->response_code = $response_code;
    }
}
$url = new URL("https://www.google.com", 302);

Możemy to znacznie uprościć poprzez promocję konstruktora:

<?php 

class URL {
    
    public function __construct(
        public $url, 
        public $response_code=302){}
}
$url = new URL("https://www.google.com", 302);

To samo, ale zapisane szybciej.

Możemy też łączyć oba podejścia – klasyczne i z promocją konstruktora:

class MyClass
{
    public string $b;

    public function __construct(
        public string $a,
        string $b,
    ) {
        $this->b = $b;
    }
}

Ważne jest, że wartości promowane nie mogą być poza nawiasami, zaś wewnątrz nawiasów muszą mieć access modifier (tutaj public).