website/errors/sealed.internalClass.md
<?php declare(strict_types = 1);
namespace Vendor {
/** @internal */
class InternalChild {}
}
namespace App {
/** @phpstan-sealed \Vendor\InternalChild */
class MyBase {}
}
The @phpstan-sealed PHPDoc tag references a class that is marked as @internal. Internal classes are not part of the public API of their package and may change or be removed at any time. Referencing them in a @phpstan-sealed tag creates a dependency on an implementation detail that could break without notice.
Reference only public (non-internal) classes in @phpstan-sealed tags:
-/** @phpstan-sealed \Vendor\InternalChild */
+/** @phpstan-sealed \Vendor\PublicChild */
class MyBase {}
If the class is internal to the same package, the error will not be reported. The @internal restriction only applies to cross-package usage.