ubean/psalm-internal-extends

Psalm plugin that enforces @internal / @psalm-internal for traits (and similar) across namespaces.

v1.0.0 2025-09-01 07:50 UTC

This package is not auto-updated.

Last update: 2025-09-02 07:30:18 UTC


README

Enforces internal visibility boundaries for trait usage in Psalm.

Configuration

Add the plugin to your psalm.xml and set an optional policy inside the <pluginClass> configuration. Supported values:

  • namespace (default): consumer namespace must equal, be a child of, or a parent of the internal namespace.
  • package: only the top-level vendor segment must match (e.g., Vendor\...).

Example psalm.xml snippet:

<plugins>
  <pluginClass class="Ubean\Psalm\Internal\TraitEnforcer\Plugin">
    <policy>namespace</policy>
  </pluginClass>
</plugins>

If not specified, the policy defaults to namespace.

Issue name

This plugin emits the issue InternalTraitUse when a class uses a trait outside the allowed internal boundary.

License

Released under the MIT License. See LICENSE for details.