papoon/inspector

Framework-agnostic service container inspector

Maintainers

Package info

github.com/papoon/inspector

pkg:composer/papoon/inspector

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 5

dev-main 2025-08-26 16:42 UTC

This package is auto-updated.

Last update: 2026-03-26 17:46:05 UTC


README

Coverage Status

A powerful tool for inspecting, visualizing, and tracking mutations in PHP service containers (Laravel, Symfony, PSR-11).

Features

  • Web dashboard for service inspection and visualization
  • CLI commands for analysis and export
  • Mutation tracking (bindings, aliases, etc.)
  • Dependency graph export (Graphviz/D3.js)
  • Service comparison across environments
  • Tagged service listing
  • Circular dependency and duplicate binding detection

Installation

composer require papoon/inspector --dev

Quick Start

Web Dashboard

php -S localhost:8000 -t public

Visit http://localhost:8000 in your browser.

CLI Usage

List services:

php bin/inspect inspector:list-services

Compare containers:

php bin/inspect inspector:compare-containers local staging prod

Export service map:

php bin/inspect inspector:export-map json

Usage in Laravel

  1. Wrap your container with the Inspector adapter:

    use Inspector\Adapters\LaravelAdapter;
    use Illuminate\Container\Container;
    
    $container = app();
    $adapter = new LaravelAdapter($container);
  2. Track mutations:

    use Inspector\MutationEventDispatcher;
    
    $dispatcher = new MutationEventDispatcher();
    $dispatcher->listen(function ($mutation) {
        logger()->info('Container mutation', $mutation);
    });
    $adapter->setMutationDispatcher($dispatcher);
  3. Use adapter methods for mutations:

    $adapter->bind('foo', function () { return new Foo(); });
    $adapter->alias('foo', 'bar');
  4. Inspect services and mutations:

    use Inspector\Inspector;
    
    $inspector = new Inspector($adapter);
    $services = $inspector->browseServices();
    $mutations = $inspector->getMutations();

Usage in Symfony

  1. Wrap your container with the Inspector adapter:

    use Inspector\Adapters\SymfonyAdapter;
    use Symfony\Component\DependencyInjection\ContainerBuilder;
    
    $container = $this->container;
    $adapter = new SymfonyAdapter($container);
  2. Track mutations:

    use Inspector\MutationEventDispatcher;
    
    $dispatcher = new MutationEventDispatcher();
    $dispatcher->listen(function ($mutation) {
        // Log or display mutation events
    });
    $adapter->setMutationDispatcher($dispatcher);
  3. Use adapter methods for mutations:

    $adapter->setDefinition('foo', new Definition(Foo::class));
    $adapter->removeDefinition('foo');
  4. Inspect services and mutations:

    use Inspector\Inspector;
    
    $inspector = new Inspector($adapter);
    $services = $inspector->browseServices();
    $mutations = $inspector->getMutations();

Test Coverage

To generate a coverage report locally:

vendor/bin/phpunit --coverage-html coverage

Open coverage/index.html in your browser to view the report.

Contributing

Pull requests and issues are welcome!
Please ensure all code is covered by tests and passes CI.

License

MIT