Вихід PHP 8.4 заплановано на завтра, і однією з цікавих новинок є асиметрична видимість властивостей. У PHP 8.4 властивості можуть мати асиметричний рівень видимості, що дозволяє визначати різний доступ для читання та запису. Приклад із документації:
class Book
{
public function __construct(
public private(set) string $title,
public protected(set) string $author,
protected private(set) int $pubYear,
) {}
}
class SpecialBook extends Book
{
public function update(string $author, int $year): void
{
$this->author = $author; // OK
$this->pubYear = $year; // Fatal Error
}
}
$b = new Book('How to PHP', 'Peter H. Peterson', 2024);
echo $b->title; // How to PHP
echo $b->author; // Peter H. Peterson
echo $b->pubYear; // Fatal Error
Пропонуючи публічний доступ до властивості, але забороняючи її (set)
доступ публічно, ви можете помітити, що $title
та $author
доступні для загального користування. Проте з властивостями можна мати детальніший контроль щодо їхніх установлених значень (за допомогою protected або private). Для властивостей класу обов’язковим є задання типу, щоб встановити окрему видимість, а set
повинен бути таким самим або більш строгим, ніж get
.
Слідкуйте за нашим постом про PHP 8.4, щоб отримувати оновлення про вихід версії PHP 8.4 21 листопада!