Menu

← Back to enum.*

Error Identifier: enum.methodRedeclaration

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);

enum Suit
{
	case Hearts;
	case Diamonds;

	public static function cases(): array
	{
		return [];
	}
}

Why is it reported? #

Enums in PHP provide built-in methods that cannot be redeclared. The cases() method is always available on every enum, and backed enums additionally have from() and tryFrom() methods. Attempting to define these methods manually results in a fatal error because they are provided natively by the language.

How to fix it #

Remove the redeclared method and use the native implementation:

 enum Suit
 {
 	case Hearts;
 	case Diamonds;
-
-	public static function cases(): array
-	{
-		return [];
-	}
 }

If custom logic is needed, use a method with a different name:

 enum Suit
 {
 	case Hearts;
 	case Diamonds;

-	public static function cases(): array
+	public static function availableCases(): array
 	{
-		return [];
+		return [self::Hearts];
 	}
 }

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\EnumSanityRule [1] [2]

Edit this page on GitHub

Theme
A
© 2026 PHPStan s.r.o.