navarr / dependency-annotation
Adds extra functionality for interpreting the @dependency annotation
Fund package maintenance!
navarr
Installs: 17
Dependents: 0
Suggesters: 0
Security: 0
Stars: 10
Watchers: 3
Forks: 0
Open Issues: 5
Type:composer-plugin
Requires
- php: ^7.1|^8
- composer-plugin-api: ^2
- composer/composer: ^2
- composer/semver: ^1|^2|^3
- navarr/attribute-dependency: ^1.0.1
- nikic/php-parser: ^4
- php-di/php-di: ^6
- symfony/console: ^5
Requires (Dev)
- php: ^8
- infection/infection: ^0.23.0
- jetbrains/phpstorm-attributes: ^1.0
- phpstan/phpstan: ^0.12.32
- phpunit/phpunit: ^9.5
- roave/security-advisories: dev-master
- squizlabs/php_codesniffer: ^3.6
Suggests
- ext-fileinfo: Use MIME types for PHP file detection
- ext-json: Required to use JSON Output
- ext-simplexml: Required to use XML Output
This package is auto-updated.
Last update: 2024-12-21 18:43:11 UTC
README
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.