docs: English JsonRpcBundle docs, REST and MCP Bundle sections, package cards
uk/articles/from-tg/series/php-can-do/property-promotion.md
новий файл +70
−0
Property Promotion
Менше коду — легше читати
- Додано у версії: PHP 8.0
- Що дає: можливість оголошувати властивості класу прямо в конструкторі — без дублювання й шаблонного коду.
Чому це крутіше за старий підхід
- не потрібно окремо описувати властивості та привласнювати їх значення у конструкторі;
- менше шуму — одразу видно структуру класу;
- ідеально підходить для DTO, запитів, VO, команд, конфігів тощо.
Фактично це "data class" по-PHPшному — коротко, без додаткових бібліотек чи автогенерації коду.
Реальний приклад застосування
// ❌ Раніше
readonly class Product {
public string $sku;
public string $name;
public float $price;
public function __construct(string $sku, string $name, float $price) {
$this->sku = $sku;
$this->name = $name;
$this->price = $price;
}
}
// ✅ Тепер
readonly class Product {
public function __construct(
public string $sku,
public string $name,
public float $price,
) {}
}
У коді це зменшує бойлерплейт майже втричі, а клас стає самоочевидним.
Де це реально корисно
- DTO у запитах/відповідях API;
- командні об’єкти в CQRS;
- значення, які описують одну сутність без поведінки (Value Object);
- Symfony-форми, коли треба швидко пробросити дані.
class CreateUserCommand {
public function __construct(
public string $email,
public string $password,
public bool $isAdmin = false,
) {}
}
Висновок
Property Promotion — не просто синтаксичний цукор, це офіційний перехід до декларативного стилю. Код виглядає лаконічніше, без зайвих рядків.
Вперше опубліковано в Telegram-каналі «Створений щоб помирати» 15.10.2025.