Menu

← Back to interface.*

Error Identifier: interface.deprecatedAttribute

Every error reported by PHPStan has an error identifier. Here’s a list of all error identifiers. In PHPStan Pro you can see the error identifier next to each error and filter errors by their identifiers.

Code example #

<?php declare(strict_types = 1);

#[\Deprecated]
interface LoggerInterface
{
	public function log(string $message): void;
}

Why is it reported? #

The PHP #[\Deprecated] attribute (introduced in PHP 8.4) cannot be used on interfaces. This attribute is designed for functions, methods, and class constants, but PHP does not support marking entire interfaces as deprecated using this native attribute. Attempting to use it on an interface is invalid and will not have the intended effect.

How to fix it #

Remove the #[\Deprecated] attribute from the interface. To mark an interface as deprecated, use the @deprecated PHPDoc tag instead:

 <?php declare(strict_types = 1);
 
-#[\Deprecated]
+/** @deprecated Use NewLoggerInterface instead */
 interface LoggerInterface
 {
 	public function log(string $message): void;
 }

Non-ignorable error #

This error cannot be ignored using @phpstan-ignore or the ignoreErrors configuration. Non-ignorable errors indicate code that would cause a crash or a fatal error at runtime, or a fundamental problem in the analysed code that must be addressed.

Rules that report this error #

  • PHPStan\Rules\Classes\ClassAttributesRule [1]

Edit this page on GitHub

Theme
A
© 2026 PHPStan s.r.o.