TGViewer
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter @phpproglib · 10.5K subscribers
Post #6241 2.36K
Небольшой совет по PHP, который сэкономит время (и строки кода)

Недавно при ревью PHP-проекта всё работало идеально: тесты зелёные, багов нет.
Но в глаза бросилось другое — один и тот же шаблон в каждом конструкторе(фото 1)

Технически всё корректно.
Практически — это рутина.

Когда в проекте:
— десятки классов
— по 5–10 свойств в каждом
вы постоянно пишете один и тот же бойлерплейт. Это шум, а не логика.

Что изменилось с PHP 8.0

В PHP 8.0 появился Constructor Property Promotion.
Он позволяет объявлять и инициализировать свойства прямо в конструкторе(фото 2)

Результат:
— нет отдельных свойств
— нет $this->name = $name
— поведение то же
— кода меньше
— читать быстрее

Мозг фокусируется на зависимостях класса, а не на механике.
Видимость — любая
class Post
{
public function __construct(
public string $title,
public string $content,
private int $authorId
) {}
}


Работает ровно так, как ожидается.

Реальный эффект на проекте

В одном Laravel-сервисе было 12 свойств.
Конструктор — ~30 строк.
После рефакторинга:
— 6 строк
— логика не изменилась
— код стало проще ревьюить

Времени: ~2 минуты (multi-cursor в VS Code).

Когда стоит использовать
Используйте promotion, если:
— свойства задаются только в конструкторе
— нет дополнительной логики при присваивании
— хотите чистый, современный PHP

Когда не стоит
Не используйте, если:
— нужна валидация
— вы трансформируете значение
— важно явно показать логику инициализации

Здесь старый способ — осознанно лучше.

🔗Ссылка на статью

Библиотека пхпшника
  • 🥱 13
  • ❤ 7
More from @phpproglib
  1. Sep 23, 2026🛠 Symfony 8.2 научился автоматически генерировать JSON Schema для конфигурации приложения…
  2. Sep 23, 2026🚀 Свежий релиз Laravel 13 с набором улучшений и исправлений ✅ добавлена поддержка valkey:…
  3. Sep 21, 2026⚡️ PHP 8.6 выйдет 19 ноября 2026 года. Сейчас версия находится в beta. Самые заметные изме…
  4. Sep 20, 2026❓ Какие существуют проблемы в многопоточной среде? Основные проблемы многопоточности: 1️⃣…
  5. Sep 19, 2026🌞 В Symfony 8.2 появилось 29 новых Bundle — теперь компоненты вроде Mailer, Messenger и C…
  6. Sep 19, 2026А вы уже забрали свой подарок ко Дню программиста? К вашему профессиональному празднику Tp…
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 →