Асиметрична видимість властивостей у PHP 8.4

1
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 17 грудня, 2025
PHP 8.4 вводить революційну функцію — асиметричну видимість властивостей, яка дозволяє встановлювати різний рівень доступу для читання та запису. Дізнайтеся, як це змінить вашу роботу з об'єктно-орієнтованим програмуванням у PHP!

Вихід 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 листопада!

Популярні

Logomark Logotype

"SQLSTATE[HY000] [2002] Connection refused" у Laravel в GitHub Actions

Чи стикалися ви з помилкою «SQLSTATE[HY000] [2002] Connection refused» під час налаштування GitHub Actions для вашого додатку на Laravel? У нашій статті ми розглянемо три поширені причини цієї помилки та надамо рішення для їх усунення. Читайте далі, щоб дізнатися, як ваш CI/CD потік може працювати бездоганно!

Logomark Logotype

Використання штучного інтелекту для управління перекладами в Laravel

Досліджуйте нові можливості локалізації вашого Laravel-додатку з пакунками, які використовують штучний інтелект, такими як ChatGPT та Claude. Які рішення можуть спростити ваш процес перекладу та зробити його більш точним? Читайте далі, щоб дізнатися більше!

Logomark Logotype

Інтеграція Laravel Socialite з бібліотекою Google Client PHP

Ви хочете навчитися, як інтегрувати Google OAuth у вашому проекті Laravel, використовуючи Socialite? Дізнайтеся, як налаштувати доступ до сервісів Google, таких як Календар, у нашій сьогоднішній статті