Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/joshdifabio/composed
Easily parse your project's Composer configuration, and those of its dependencies, at runtime
https://github.com/joshdifabio/composed
Last synced: about 1 month ago
JSON representation
Easily parse your project's Composer configuration, and those of its dependencies, at runtime
- Host: GitHub
- URL: https://github.com/joshdifabio/composed
- Owner: joshdifabio
- License: mit
- Created: 2015-07-11T19:45:04.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2016-11-14T12:20:32.000Z (about 8 years ago)
- Last Synced: 2024-10-07T13:19:41.932Z (2 months ago)
- Language: PHP
- Homepage:
- Size: 22.5 KB
- Stars: 52
- Watchers: 3
- Forks: 4
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-php - Composed - A library to parse your project's Composer environment at runtime. (Table of Contents / Dependency Management Extras)
- awesome-php-cn - Composed - 一个库来解析您的项目的作曲家在运行时环境中. (目录 / 依赖关系管理临时演员 dependency-management-extras)
- awesome-projects - Composed - A library to parse your project's Composer environment at runtime. (PHP / Dependency Management Extras)
- awesome-php - Composed - A library to parse your project's Composer environment at runtime. (Table of Contents / Dependency Management Extras)
README
# Composed
[![Code Quality](https://img.shields.io/scrutinizer/g/joshdifabio/composed.svg?style=flat-square)](https://scrutinizer-ci.com/g/joshdifabio/composed/)
This library provides a set of utility functions designed to help you parse your project's Composer configuration, and those of its dependencies, at runtime.
## Usage
The API combines functional and object-oriented approaches.
### Locate the vendor directory
(Chicken and egg...)
```php
$absoluteVendorPath = Composed\VENDOR_DIR;
```### Locate the project's base directory
```php
$absoluteProjectPath = Composed\BASE_DIR;
```### Get the authors of a specific package
You can fetch data from the `composer.json` file of a specific package.
```php
$authors = Composed\package_config('phpunit/phpunit', 'authors');assert($authors === [
[
'name' => "Sebastian Bergmann",
'email' => "[email protected]",
'role' => "lead",
],
]);
```### Get licenses of all installed packages
You can fetch data from all `composer.json` files in your project in one go.
```php
$licenses = Composed\package_configs('license');assert($licenses === [
'joshdifabio/composed' => "MIT",
'doctrine/instantiator' => "MIT",
'phpunit/php-code-coverage' => "BSD-3-Clause",
]);
```### Get the absolute path to a file in a package
```php
$path = Composed\package('phpunit/phpunit')->getPath('composer.json');
```### Get all packages installed on your project
```php
foreach (Composed\packages() as $packageName => $package) {
$pathToPackageConfig = $package->getPath('composer.json');
// ...
}
```### Get data from your project's Composer config
You can also fetch data from the `composer.json` file located in your project root.
```php
$projectAuthors = Composed\project_config('authors');assert($projectAuthors === [
[
'name' => 'Josh Di Fabio',
'email' => '[email protected]',
],
]);
```## Installation
Install Composed using [composer](https://getcomposer.org/).
```
composer require joshdifabio/composed
```## Credits
Credit goes to @igorw whose [get-in](https://github.com/igorw/get-in) library is partially copied into this library. Unfortunately, `igorw/get-in` requires PHP 5.4 while Composed aims for PHP 5.3 compatibility.
## License
Composed is released under the [MIT](https://github.com/joshdifabio/composed/blob/master/LICENSE) license.