concept-labs / composer
(C)oncept-Labs Composer Helper
Installs: 14
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/concept-labs/composer
Requires
- php: >=8.0
Requires (Dev)
- pestphp/pest: ^2.0
- phpunit/phpunit: ^10.0|^11.0
Suggests
- concept-labs/singularity: PSR Container. Powerfull aAnd Flexable Dependency Injection pack
This package is auto-updated.
Last update: 2025-10-11 17:23:21 UTC
README
A lightweight PHP library that provides convenient helper methods for working with Composer metadata and project information.
Features
- 🚀 Get vendor and project root directories
- 📦 Access composer.json data programmatically
- 🔍 Check if packages are installed
- 🎯 Retrieve package metadata (name, description, version)
- 🏗️ Access PSR-4 autoload configuration
- ✅ Fully tested with PHPUnit and PEST
- 💯 100% code coverage
Installation
Install via Composer:
composer require concept-labs/composer
Requirements
- PHP 8.0 or higher
- Composer installed and autoloader loaded
Quick Start
<?php use Concept\Composer\Composer; // Get the vendor directory $vendorDir = Composer::getVendorDir(); echo "Vendor: {$vendorDir}\n"; // Get the project root directory $rootDir = Composer::getRootDir(); echo "Root: {$rootDir}\n"; // Get package name $packageName = Composer::getPackageName(); echo "Package: {$packageName}\n"; // Check if a package is installed if (Composer::isPackageInstalled('symfony/console')) { echo "Symfony Console is installed!\n"; }
Usage
Getting Directory Paths
// Get vendor directory $vendorDir = Composer::getVendorDir(); // Returns: /path/to/project/vendor // Get project root directory (parent of vendor) $rootDir = Composer::getRootDir(); // Returns: /path/to/project // Get composer.json file path $composerJsonPath = Composer::getComposerJsonPath(); // Returns: /path/to/project/composer.json
Accessing Composer Metadata
// Get all composer.json data as array $data = Composer::getComposerData(); // Returns: ['name' => 'vendor/package', 'type' => 'library', ...] // Get package name $name = Composer::getPackageName(); // Returns: "concept-labs/composer" // Get package description $description = Composer::getPackageDescription(); // Returns: "(C)oncept-Labs Composer Helper" // Get package version (if defined in composer.json) $version = Composer::getPackageVersion(); // Returns: "1.0.0" or null if not set
Working with Autoload Configuration
// Get PSR-4 autoload namespaces $psr4 = Composer::getAutoloadPsr4(); // Returns: ['Concept\\Composer\\' => 'src/'] // Get PSR-4 autoload-dev namespaces $psr4Dev = Composer::getAutoloadDevPsr4(); // Returns: ['Concept\\Composer\\Test\\' => 'tests/']
Checking Package Installation
// Check if a package is installed $isInstalled = Composer::isPackageInstalled('symfony/console'); // Returns: true or false // Check multiple packages $packages = ['symfony/console', 'phpunit/phpunit', 'pestphp/pest']; foreach ($packages as $package) { if (Composer::isPackageInstalled($package)) { echo "{$package} is installed\n"; } }
Cache Management
The Composer
class caches loaded data for better performance. You can reset the cache if needed:
// Reset all cached data Composer::reset(); // After reset, next call will reload data $vendorDir = Composer::getVendorDir();
Error Handling
The library throws exceptions for error conditions:
use Concept\Composer\Composer; try { $data = Composer::getComposerData(); } catch (\RuntimeException $e) { // Handle errors: // - Composer not loaded // - composer.json not found // - Invalid JSON in composer.json echo "Error: {$e->getMessage()}\n"; }
Testing
The library is fully tested with both PHPUnit and PEST:
Run PEST Tests
composer test # or vendor/bin/pest
Run PHPUnit Tests
composer test:unit
# or
vendor/bin/pest --phpunit
Run Specific Test Suite
# Run only unit tests vendor/bin/pest tests/Unit # Run only feature tests vendor/bin/pest tests/Feature
Documentation
For more detailed documentation, see the docs directory:
- API Reference - Complete API documentation
- Examples - Usage examples and patterns
- Best Practices - Recommended usage patterns
- Testing Guide - How to test your code with this library
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
Development Setup
# Clone the repository git clone https://github.com/Concept-Labs/composer.git cd composer # Install dependencies composer install # Run tests composer test
License
This project is licensed under the MIT License - see the LICENSE file for details.
Authors
- Viktor Halytskyi - concept.galitsky@gmail.com
Support
If you encounter any issues or have questions, please file an issue on the GitHub issue tracker.
Changelog
See CHANGELOG.md for a list of changes.