Skip to content

navarr/dependency-annotation

Repository files navigation

The #[Dependency] Attribute

Latest Stable Version Total Downloads Latest Unstable Version License
Tests Code Coverage Mutation score

This project supplies a Composer plugin that adds a command (why-block) that interprets a PHP #[Dependency] attribute.

How to use the #[Dependency] annotation

Simply include a #[Dependency] attribute on any attributable target in the following format:

#[Navarr\Attribute\Dependency('package', 'versionConstraint', 'reason')]

This FQN may be imported, in which case you can simply use #[Dependency(...)]

All fields except the explanation are mandatory. Adding an explanation is highly recommended, however.

How to process reasons not to upgrade a composer dependency

If you are using the #[Dependency] annotation thoroughly, and you are having issues updating a composer dependency, you can use the command composer why-block composer-package version

This will output a list of files containing a #[Dependency] annotation on composer-package with a version-constraint that cannot be fulfilled by the specified version.

How to install

composer global require navarr/dependency-annotation

Compatibility with v1

For speed, version 2 automatically excludes the legacy @dependency annotation in favor of the PHP8 #[Dependency] attribute. While transitioning, you may specify the -l or --include-legacy-annotations flag to the why-block command to force it to process v1 annotations as well.

About

A composer command to determine why the codebase shouldn't be updated to a new version of a package, based on the existence of #[Dependency] attributes

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project