From d36c53cc296625f628ead6304e8f69a1fc90d613 Mon Sep 17 00:00:00 2001 From: lacatoire Date: Fri, 19 Jun 2026 11:09:38 +0200 Subject: [PATCH] Sync nodiscard.xml: behavior on interface, abstract, and overriding methods --- language/predefined/attributes/nodiscard.xml | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/language/predefined/attributes/nodiscard.xml b/language/predefined/attributes/nodiscard.xml index 6f4618c53e..dbdc0973e3 100644 --- a/language/predefined/attributes/nodiscard.xml +++ b/language/predefined/attributes/nodiscard.xml @@ -1,5 +1,5 @@ - + Атрибут NoDiscard @@ -34,6 +34,20 @@ и подавит предупреждение при переносе кода на PHP 8.5. + + + Атрибут #[\NoDiscard] применяется к конкретному объявлению + функции или метода, на котором его написали, а предупреждение выдаётся на + основе того объявления, которое вызвали на самом деле. Поэтому добавление + атрибута #[\NoDiscard] к методу интерфейса или абстрактному + методу не приводит к предупреждению, поскольку вызывается метод реализации + или переопределяющий метод. Аналогично метод, который переопределяет метод + с атрибутом #[\NoDiscard], не выдаёт предупреждение, если + только его самого не пометили этим атрибутом. Напротив, метод, + импортированный из трейта, сохраняет атрибут, поскольку метод трейта + копируется в использующий класс, как будто его объявили там. + +