vluzrmos/tinker
Tinker brings an interactive PHP REPL to Laravel via PsySH, adding the artisan tinker command so you can experiment with your app's code, test Eloquent queries, and inspect objects from the terminal without writing throwaway routes or scripts.
What it is: A Lumen service provider plus tinker Artisan command that wires PsySH into a Lumen application. 109 stars, single maintainer, last release 2018-06-27, zero dependents in the dataset.
Architecture fit: Lumen deliberately omits Tinker because it strips the fuller Artisan/console stack. This package re-adds it by registering a command and bootstrapping the container into PsySH. The integration surface is shallow — command registration and container access, nothing contractual — which means it is harmless when it works and opaque when it doesn't. It is a developer-ergonomics tool, not a runtime component; it should never appear in a production dependency graph.
Integration feasibility: Mechanically simple: composer require --dev vluzrmos/tinker and register the provider in bootstrap/app.php. The blocker is the version matrix. The package's illuminate/*, symfony/console, and psy/psysh constraints are frozen circa Laravel 5.x, so it will almost certainly conflict with Lumen 8/9/10 on Symfony 5/6 and PHP 8.x. Feasibility is therefore a function of how far behind the target service is.
Technical risk:
psy/psysh and symfony/var-dumper.APP_ENV loads it anywhere reachable.composer update friction that will be attributed to "the tinker package" long after everyone forgets why it was added.Key questions:
php -r / REPL-script fallback?require-dev?Stack fit: Only fits Lumen ≤ 5.8 on PHP 7.x. On anything newer, treat it as non-viable rather than "probably fine."
Recommended migration path: Do not adopt. Replace with an owned, first-party-equivalent setup:
composer require --dev psy/psysh plus a small bin/tinker script that boots the Lumen app, hands the container to PsySH, and exits. Roughly 30 lines, fully owned, no abandoned dependency in the chain.laravel/tinker's command class into app/Console/Commands and register it manually. Still pulls PsySH, but under a maintained upstream package.Compatibility: Before any spike, run composer why-not vluzrmos/tinker <target-version> and capture the conflict output. Expect symfony/console and psy/psysh to be the failure points; that output is the evidence that closes the debate either way.
Sequencing:
--dev to record real resolver behavior — do not estimate from the README.bootstrap/app.php and add a comment explaining why it must not return.require-dev on both the lowest and highest supported PHP versions to catch regressions early.Maintenance: Effectively zero upstream. Any bug is a fork, and forking a ~30-line command plus provider is more honest than depending on it. Budget an explicit owner if the package stays.
Support: No issue triage since 2018; answers will come from stale Stack Overflow threads. Onboarding must be self-served through internal docs.
Scaling: Irrelevant as a dev-only tool, but it scales poorly across a fleet in the sense of per-machine PHP and Composer divergence. Containerized dev environments neutralize this.
Failure modes:
composer update breaks resolution — most frequent, low severity, high toil.require-dev is not installed in production builds.Ramp-up: Half a day for any Laravel developer; the REPL interface is familiar. The real cost is dependency archaeology, not learning the tool. Net TPM position: low value, moderate-to-high supply-chain risk, low replacement cost — recommend deprecating it in favor of an owned PsySH bootstrap before it becomes an incident.
How can I help you explore Laravel packages today?