PHP: Class Constructors with PHP 8
Glossary overview

PHP: Class Constructors with PHP 8

Синтаксис промоушена свойств (constructor property promotion) — короткая запись, появившаяся в PHP 8.0.

// call class
dispatch((new UpdatePost($postId, $wpPostId))->onQueue('update-posts'));

// class constructor
class UpdatePost implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    public function __construct(
        public int $postId,
        public int $wpPostId
    ) {}

....

🧠 Что делает этот конструктор?

Этот конструктор:

  • Автоматически создаёт публичные свойства $postId и $wpPostId в классе;
  • Автоматически присваивает значения этим свойствам при создании объекта.

⏱️ Эквивалент на старом синтаксисе (до PHP 8):

public int $postId;
public int $wpPostId;

public function __construct(int $postId, int $wpPostId)
{
    $this->postId = $postId;
    $this->wpPostId = $wpPostId;
}

📌 Резюме

Конструктор public function __construct(public int $postId, public int $wpPostId):

  • Это сокращённый способ объявления и инициализации свойств;
  • Полностью эквивалентен обычному конструктору с присвоением $this->...;