Description
Composition provides a lightweight and generic API, that you can use to check your
environment at runtime, instead of manually go checking for regex in constants,
classes/functions existence, matching a version against a class constant, ...
It only works when using Composer as package management tool.
Composition alternatives and similar libraries
Based on the "Dependency Management Extras" category.
Alternatively, view Composition alternatives based on common mentions on social networks and blogs.
-
Satis
Simple static Composer repository generator - For a full private Composer repo use Private Packagist -
Composer Merge Plugin
Merge one or more additional composer.json files at Composer runtime -
composer-normalize
:musical_note: Provides a composer plugin for normalizing composer.json. -
tooly
Simple composer script to manage phar files using project composer.json. -
Patch Installer
Patch other composer packages on install or update -
Composed
Easily parse your project's Composer configuration, and those of its dependencies, at runtime -
Composer Checker
A tool to validate Composer configurations.
Clean code begins in your IDE with SonarLint
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Composition or a related project?
README
Composition 
Composition provides a lightweight and generic API, that you can use to check your environment at runtime, instead of manually go checking for regex in constants, classes/functions existence, matching a version against a class constant, ...
It only works when using Composer as package management tool.
Some examples
A single command to check your PHP environment :
if (!\Composition::has('vendor/super-package', '>=2.0') {
$this->markTestSkipped('The following tests require "SuperPackage" to be at least at 2.0');
}
\Composition::has('php', '5.4.*');
\Composition::has('ext-mongo');
Check the platform :
if (\Composition::isWindows()) {
// ...
}
Note
This tool should mostly be used in your unit tests, and not be abused in production.