TGViewer
The Fly's PHP - Делаем из Мухи Слона The Fly's PHP - Делаем из Мухи Слона @flyphp · 414 subscribers
Post #61 341
Ребята, привет!

Если в PHP взять обычный класс, являются ли его свойства свойствами по определению?) Кто подзабыл, напоминаю что такое свойство.

Я думаю вы уже догадались с какими новостями я к вам пришел сегодня, да-да, все верно RFC Хуки свойств (Property hooks) был принят и ожидается в PHP 8.4 (пока прям вот не 100%, но 99% это точно).
Итак, давайте, пробежимся по тому, что имеем и что нам Илья Товило и Ларри Гарфилд преподнесли:

Получение свойства класса или установка его значения является обычной задачей в объектно-ориентированном программировании. В PHP есть несколько способов сделать это.

Возьмем, к примеру, следующий класс.
class User
{
private string $name;
}

Как вы можете заметить, у нас в классе есть приватное свойство $name. Теперь мы можем определить геттеры и сеттеры для чтения и записи значения свойства соответственно, что до PHP 7.4 можно было считать идиоматическим:
class User
{
private string $name;

public function getName(): string
{
return $this->name;
}

public function setName(string $name): void
{
$this->name = $name;
}
}

$user = new User();
$user->setName('Sergey');

echo $user->getName(); // Sergey

Это обычный традиционный подход, и люди используют его уже давно. Начиная с PHP 8 мы можем сократить код еще больше, используя объявление свойства в конструкторе:
class User
{
public function __construct(public string $name) {}
}

$user = new User('Sergey');

echo $user->name; // Sergey

Это довольно аккуратный подход, и он немного более краток при использовании методов чтения и записи. Это намного удобнее, но за это приходится платить: если позже мы захотим добавить дополнительное поведение (например, проверку или предварительную обработку), то сделать это будет негде.

Мы также можем использовать магические методы _ _get и _ _set для достижения того же рез
В PHP 8.4 этот ключевой аспект будет улучшен за счет введения хуков свойств.

Хуки свойств (Propertry Hooks) - это новая функция PHP 8.4, которая позволит вам определять собственную логику для доступа к свойствам и их изменениям. Это может быть полезно для различных случаев использования, таких как мутация, ведение логов, проверка или кэширование.

По сути, Propertry Hooks позволяют вам определять дополнительное поведение свойств класса, используя в основном два хука: get и set. И это будет индивидуально для определенных свойств.

Приведенный ниже дизайн и синтаксис больше всего похож на Kotlin, хотя он также опирается на влияние C# и Swift. Python и JavaScript имеют схожие функции благодаря разному синтаксису, хотя этот синтаксис и непригоден для PHP. Ruby рассматривает свойства и методы почти одинаково, поэтому эта функциональность достигается как побочный эффект. Короче говоря, "средства доступа к свойствам" - очень распространенная функция в основных популярных языках программирования.

Что интересно, авторы просят не пугаться длинному тексту RFC, а предлагают отнестись к этому как глубоко проработанному материалу, отвечающему на все вопросы) Мы конечно пробежимся по самому главному, но если вы хотите узнать детали разработки, то можете почитать оригинальный RFC.

Вот как мы можем написать set для $name свойства в предыдущем примере:

class User
{
public string $name {
set (string $value) {
// валидация имени
if (mb_strlen(value) < 4)) {
throw new InvalidArgumentException(
'Invalid Name'
);
}

// Установка значения
$this->name = $value;
}
}
}

Как вы можете заметить, хуки заключаются в фигурные скобки, которые идут сразу после имени свойства. Затем мы можем определить хуки внутри этого блока кода.
  • 👍 10
More from @flyphp
  1. Sep 10, 2026🐘 Пыхник’26 - целая неделя PHP! С 28 сентября по 2 октября собираемся на Пыхнике’26 - онл…
  2. Sep 10, 2026Post #105
  3. Jul 8, 2026Первый официальный State of PHP опрос открыт: https://jb.gg/php-survey-2026 В сообществе у…
  4. Jun 2, 2026Вышел TrueAsync 0.7.0, краеугольная версия, которая определяет необходимый API для асинхро…
  5. May 23, 2026В конце 2025 года проводился ежегодный опрос русскоязычного PHP-сообщества. Результаты опр…
  6. Jan 15, 2026🚀 Большой ежегодный опрос по PHP 🐘 🤘 Присоединяйся и помогай комьюнити становиться толь…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →