Trong PHP 8, Constructor Property Promotion được thêm. Giúp giảm nhiều code boilerplate khi xây dựng đối tượng đơn giản. Tính năng này cho phép kết hợp các trường lớp, định nghĩa constructor, và gán biến, tất cả trong một cú pháp, vào danh sách tham số constructor.
Có thể nói thay vì chỉ định thuộc tính lớp và constructor riêng, có thể gộp tất cả bằng constructor property promotion.
Ví dụ 1: Code PHP 7
<?php
class Account {
public float $a;
public float $b;
public float $c;
public function __construct(
float $a = 0.0,
float $b = 0.0,
float $c = 0.0,
) {
$this->a = $x;
$this->b = $y;
$this->c = $z;
}
}
?>
Ví dụ 2: Code PHP 8
Có thể viết lại code PHP 7 trên trong PHP 8 như sau:
<?php
class Account {
public function __construct(
public float $a = 0.0,
public float $b = 0.0,
public float $c = 0.0,
) {}
}
$Account = new Account(10.90, 20.0, 30.80);
print_r($Account->a);
print_r($Account->b);
print_r($Account->c);
?>
Kết quả
10.9 20 30.8
Trong code trên, kết hợp định nghĩa thuộc tính và gán giá trị ngay trong chữ ký constructor. Code này loại bỏ sự lặp lại.
Ví dụ 3: Code PHP 8 cho Constructor Property Promotion
<?php
class Employee {
public function __construct(
public int $id,
public string $name,
) {}
}
$employee = new Employee(11, 'Alex');
print_r($employee->id);
print_r($employee->name);
?>
Kết quả
11 Alex