Menu

← Back to class.*

Error Identifier: class.extendsInternalEnum

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

// In vendor/some-package/src/Status.php:
// /** @internal */
// enum Status { case Active; }

// In your code:
class MyClass extends \SomePackage\Status
{
}

Why is it reported? #

The class extends a type that is marked as @internal and is an enum. Internal types are not part of the package’s public API and may change or be removed without notice in future versions. Additionally, enums cannot be extended in PHP at all, making this doubly invalid.

How to fix it #

Do not extend internal enums. Use the public API of the package instead, or use composition:

 <?php declare(strict_types = 1);
 
-class MyClass extends \SomePackage\Status
+class MyClass
 {
+    // Use the package's public API instead
 }

If no public alternative exists, consider reaching out to the package maintainers to request a public API for your use case.

How to ignore this error #

You can use the identifier class.extendsInternalEnum to ignore this error using a comment:

// @phpstan-ignore class.extendsInternalEnum
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: class.extendsInternalEnum

Rules that report this error #

  • PHPStan\Rules\InternalTag\RestrictedInternalClassNameUsageExtension [1]

Edit this page on GitHub

Theme
A
© 2026 PHPStan s.r.o.