muglug / package-versions
A backport of ocramius/package-versions that supports php ^5.6. Composer plugin that provides efficient querying for installed package versions (no runtime IO)
Installs: 22 777
Dependents: 0
Suggesters: 0
Security: 0
Stars: 35
Watchers: 2
Forks: 72
Type:composer-plugin
Requires
- php: ^5.6 || ^7.0
- composer-plugin-api: ^1.0
Requires (Dev)
- ext-zip: *
- composer/composer: ^1.3
- phpunit/phpunit: ^5.7.5
README
This is a backport of
ocramius/package-versions
that support php 5.6, whileocramius/package-versions
only support php 7+.
It's a more recent version of samsonasik/package-versions
This utility provides quick and easy access to version information of composer dependencies.
This information is derived from the composer.lock
file which is (re)generated during composer install
or composer update
.
$version = \PackageVersions\Versions::getVersion('muglug/package-versions'); var_dump($version); // 1.0.0@0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33 $version = \PackageVersions\Versions::getShortVersion('muglug/package-versions'); var_dump($version); // 1.0.0 $version = \PackageVersions\Versions::getMajorVersion('muglug/package-versions'); var_dump($version); // 1
Installation
composer require muglug/package-versions
It is suggested that you use a optimized composer autoloader in order to prevent
autoload I/O when accessing the PackageVersions\Versions
API:
Therefore you should use optimize-autoloader: true
in your composer.json:
...
"config": {
"optimize-autoloader": true
},
...
see https://getcomposer.org/doc/06-config.md#optimize-autoloader
In case you manually generate your autoloader via the CLI use the --optimize
flag:
composer dump-autoload --optimize
Use-cases
This repository implements PackageVersions\Versions::getVersion()
in such a way that no IO
happens when calling it, because the list of package versions is compiled during composer
installation.
This is especially useful when you want to generate assets/code/artifacts that are computed from the current version of a certain dependency. Doing so at runtime by checking the installed version of a package would be too expensive, and this package mitigates that.