📦 Composer addon to efficiently get installed packages' version numbers
PHP Shell
Latest commit ad8a245 Nov 24, 2017 @Ocramius Ocramius Merge pull request #51 from Jean85/uniform-package-version
Uniform version style for root package
Permalink
Failed to load latest commit information.
src/PackageVersions
test/PackageVersionsTest
.gitattributes
.gitignore
.scrutinizer.yml
.travis.coverage.sh
.travis.install.sh Test --classmap-authoritative in a separate build Jul 22, 2016
.travis.yml
CHANGELOG.md
CONTRIBUTING.md
LICENSE
README.md
composer.json
humbug.json.dist
phpunit.xml.dist Correcting tests target path Jan 25, 2016

README.md

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('ocramius/package-versions');

var_dump($version); // 1.0.0@0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33

Build Status Scrutinizer Code Quality Code Coverage Downloads Packagist Packagist Pre Release

Installation

composer require ocramius/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.