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

1.0.1 2025-10-11 17:22 UTC

This package is auto-updated.

Last update: 2025-10-11 17:23:21 UTC


README

License: MIT PHP Version

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:

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. 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

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.