Constructor property promotion в PHP
Доброго времени суток!
Constructor Property Promotion (Продвижение Свойств в Конструкторе) - это нововведение в PHP 8, которое значительно упрощает написание классов, позволяя определять их свойства прямо в сигнатуре конструктора. Это уменьшает объем необходимого кода и делает его более читаемым. Давайте рассмотрим на примере.
Как было до PHP 8
class User {
public string $name;
public string $email;
public ?int $age;
public function __construct(string $name, string $email, ?int $age = null) {
$this->name = $name;
$this->email = $email;
$this->age = $age;
}
}
В этом примере мы должны явно объявить свойства класса User перед определением конструктора, а затем внутри конструктора мы снова должны присвоить значения этим свойствам.
Стало в PHP 8
class User {
public function __construct(
public string $name,
public string $email,
public ?int $age = null,
) {}
}
В PHP 8 мы можем определить свойства напрямую в сигнатуре конструктора, что делает код более компактным и понятным. Здесь не нужно повторно объявлять свойства в теле конструктора, они автоматически создаются и инициализируются значениями, переданными при создании объекта.
Преимущества использования конструктора Property Promotion очевидны:
- Краткость кода: Значительно уменьшается количество строк кода, что делает его более лаконичным и удобным для чтения и поддержки.
- Удобство: Нет необходимости явно присваивать значения свойствам внутри конструктора, они инициализируются автоматически.
- Ясность: Свойства класса теперь определяются непосредственно в месте, где они используются, что делает структуру класса более ясной и легкой для понимания.
$user1 = new User("John Doe", "[email protected]");
$user2 = new User("Jane Doe", "[email protected]", 30);
Оба этих объекта созданы с использованием конструктора Property Promotion. При создании объекта мы передаем только обязательные параметры ($name и $email), а для $age используется значение по умолчанию. Это значительно сокращает количество кода и делает его более эффективным.
Таким образом, использование Constructor Property Promotion в PHP 8 делает код более компактным, читаемым и удобным для поддержки, что является значимым улучшением в разработке программного обеспечения.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.