PHP 8.3: атрибут #[\Override] при переопределении методов
Использование встроенного атрибута #[\Override] для проверки переопределения метода родителя — защита от опечаток и смены сигнатуры.
Как использовать
- Скопируйте нужный фрагмент кода.
- Вставьте в свой проект и при необходимости измените под задачу.
- Проверьте зависимости и окружение (версии, переменные).
В PHP 8.3 добавлен встроенный атрибут #[\Override]. Если пометить им метод, движок проверит, что в родительском классе или реализуемом интерфейсе есть метод с тем же именем. Документация: PHP 8.3 Override.
<?php
class BaseHandler
{
public function handle(): void
{
// базовая логика
}
}
class OrderHandler extends BaseHandler
{
#[\Override]
public function handle(): void
{
// переопределённая логика заказа
}
}
Ошибка при несовпадении имени:
class OrderHandler extends BaseHandler
{
#[\Override]
public function handl(): void // опечатка: handl вместо handle
{
}
}
// Fatal error: OrderHandler::handl() has #[\Override] attribute,
// but no matching parent method exists
Usage:
В модулях Bitrix, интеграциях и любом коде с наследованием: помечайте переопределённые методы #[\Override], чтобы при переименовании родителя или опечатке сразу получить ошибку, а не тихий баг.
Notes:
⚠️ Атрибут встроенный, объявлять свой класс не нужно. Применяется только к методам. Подходит для классов и для методов, реализующих интерфейс.