Error Identifier: interface.extendsDeprecatedEnum
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 Use NewStatus instead */
enum OldStatus
{
case Active;
case Inactive;
}
interface StatusInterface extends OldStatus // ERROR: Interface StatusInterface extends deprecated enum OldStatus.
{
}
Why is it reported? #
This error is reported by phpstan/phpstan-deprecation-rules.
The interface extends an enum that has been marked with the @deprecated PHPDoc tag. Extending a deprecated type ties your interface to an implementation that is scheduled for removal or replacement. When the deprecated enum is eventually removed, the interface declaration will break.
How to fix it #
Replace the deprecated enum with its recommended replacement:
<?php declare(strict_types = 1);
-interface StatusInterface extends OldStatus
+interface StatusInterface extends NewStatus
{
}
If the enum should not be extended at all, define the required contract directly on the interface:
<?php declare(strict_types = 1);
-interface StatusInterface extends OldStatus
+interface StatusInterface
{
+ public function label(): string;
}
How to ignore this error #
You can use the identifier interface.extendsDeprecatedEnum to ignore this error using a comment:
// @phpstan-ignore interface.extendsDeprecatedEnum
codeThatProducesTheError();
You can also use only the identifier key to ignore all errors of the same type in your configuration file in the ignoreErrors parameter:
parameters:
ignoreErrors:
-
identifier: interface.extendsDeprecatedEnum
Rules that report this error #
- PHPStan\Rules\Deprecations\RestrictedDeprecatedClassNameUsageExtension [1] phpstan/phpstan-deprecation-rules