Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
Php Composer Reader

Php Composer Reader Laravel Package

nadar/php-composer-reader

Small PHP library to read and manipulate composer.json. Load and validate readability/writability, dump full content, and work with typed section readers (e.g., require, autoload PSR-4) to iterate packages/namespaces, inspect constraints, and add sections.

View on GitHub
Deep Wiki
Context7

A PHP library to read and manipulate the composer.json file.

Frequently asked questions about Php Composer Reader
How do I use this package to check if a specific package is installed in my Laravel app?
Use the `ComposerJsonReader` class to load your `composer.json` file, then check the `require` or `require-dev` sections for the package name. For example, `if ($reader->getRequire()->has('laravel/framework'))` will confirm Laravel is installed. This avoids running `composer show` or parsing JSON manually.
Can I modify composer.json dynamically at runtime in a Laravel application?
Yes, the package allows programmatic edits to `composer.json`, such as adding or removing dependencies. However, runtime changes won’t update Composer’s lock file or vendor directory—use this for build-time or scaffolding tasks, not production dependency management. Always validate changes against the Composer schema to avoid malformed files.
Will this package work with Laravel 10 and the latest Composer schema?
The package is framework-agnostic and works with Laravel 5.8+ (PHP 7.2+). For full Composer schema compatibility, ensure you’re using the latest version of `nadar/php-composer-reader` and validate against `getcomposer.org/schema`. If the package lags behind schema updates, consider forking or patching it for critical projects.
How do I integrate this into a Laravel Artisan command for dependency analysis?
Inject the `ComposerJsonReader` into your Artisan command via Laravel’s service container. Load the `composer.json` file in the command’s `handle()` method, then iterate over `getRequire()`, `getExtra()`, or other sections to analyze dependencies. Example: `$reader = app(ComposerJsonReader::class); $packages = $reader->getRequire()->getNames();`
Is there a performance impact if I parse composer.json on every request in Laravel?
Parsing `composer.json` is lightweight, but frequent reads in request middleware or routes may add unnecessary overhead. Cache the parsed object in Laravel’s cache or service container (e.g., `Cache::remember()`) if used repeatedly. For build-time tasks, parse once during bootstrapping.
How do I handle malformed or invalid composer.json files with this package?
The package validates JSON structure but may silently fail on schema violations (e.g., invalid field types). Always wrap usage in try-catch blocks and validate against the Composer schema manually if strict compliance is needed. Example: `try { $reader->loadFile('composer.json'); } catch (InvalidArgumentException $e) { // Handle error }`
Can I use this to enforce custom dependency policies in Laravel (e.g., block certain packages)?
Yes, parse the `require` section and compare against a whitelist or blacklist of allowed packages. For example, iterate over `$reader->getRequire()->getNames()` and reject requests if unauthorized packages are detected. Combine with Laravel’s middleware or service providers for enforcement.
What’s the difference between this package and Laravel’s built-in Composer facade or spatie/laravel-package-tools?
This package offers **low-level access** to raw `composer.json` data (e.g., `extra` fields, scripts, or custom metadata), while Laravel’s facade or `spatie/laravel-package-tools` focus on higher-level package management. Use this for edge cases like dynamic dependency injection or custom installers where fine-grained control is needed.
How do I add a custom field (e.g., ‘app:metadata’) to composer.json using this library?
Use the `ComposerJsonReader` to load the file, then modify the `extra` section with your custom key-value pair. Example: `$reader->getExtra()['app:metadata'] = ['version' => '1.0']; $reader->saveFile('composer.json');`. Note that custom fields won’t affect Composer’s behavior but can be read by your tooling.
Is this package safe to use in production for modifying composer.json files?
Use with caution—modifying `composer.json` at runtime can break dependency resolution or security. Restrict write operations to trusted contexts (e.g., CI/CD pipelines or scaffolding scripts). For production, prefer build-time changes or use Laravel’s configuration system instead of altering `composer.json` dynamically.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
aimeos/prisma
besmartand-pro/php-quality-config
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky
spatie/mailcoach-vapor
spatie/laravel-javascript-views