website/errors/requireImplements.internalInterface.md
<?php declare(strict_types = 1);
namespace Vendor {
/** @internal */
interface InternalInterface {}
}
namespace App {
/**
* @phpstan-require-implements \Vendor\InternalInterface
*/
trait MyTrait {}
}
The @phpstan-require-implements PHPDoc tag references an interface that is marked as @internal. Internal interfaces are not part of the public API of their package and may change or be removed without notice. Depending on an internal interface in a @phpstan-require-implements constraint creates a fragile dependency on implementation details.
Use a public (non-internal) interface in the @phpstan-require-implements tag instead:
/**
- * @phpstan-require-implements \Vendor\InternalInterface
+ * @phpstan-require-implements \Vendor\PublicInterface
*/
trait MyTrait {}
If no public alternative exists, consider reaching out to the package maintainers to request a public API for your use case.