Binding snapshots and diagnostics for Ray.Di.
composer require --dev ray/bindingsCollect a module after its bindings have been composed:
use Ray\Bindings\Bindings;
$bindings = new Bindings();
$module->accept($bindings);
$markdown = $bindings->toMarkdown();
$html = $bindings->toHtml($composerLock, 'prod-app', $vendorDir);The snapshot contains the resolved bindings, module composition, pointcuts and
binding provenance at the time accept() is called. Later module changes do
not mutate an existing snapshot; visiting another module replaces it.
Ray.Di 2.23+ writes bindings.md into the injector's directory at composition
time. Render that file as a standalone HTML page:
vendor/bin/bindings-html bindings.md composer.lock prod-app > bindings.htmlPass a Graphviz DOT of the module to show the object graph above the bindings. The browser lays it out, so no Graphviz binary is needed. Generate the DOT with ray/object-visual-grapher:
use Ray\ObjectGrapher\ObjectGrapher;
$dot = (new ObjectGrapher())($module);
$html = $bindings->toHtml($composerLock, 'prod-app', $vendorDir, $dot);vendor/bin/bindings-html bindings.md composer.lock prod-app graph.dot > bindings.html