hydrakit / symfony-console
Symfony Console adapter: the default runner for Hydra commands, and the only package that names it.
Requires
- php: >=8.2
- hydrakit/console: ^0.24
- symfony/console: ^7.0
Requires (Dev)
- phpunit/phpunit: ^11.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
- dev-main / 0.24.x-dev
- v0.24.0
- v0.23.0
- v0.22.1
- v0.22.0
- v0.21.0
- v0.20.0
- v0.19.0
- v0.18.0
- v0.17.0
- v0.16.0
- v0.15.0
- v0.14.0
- v0.13.0
- v0.12.0
- v0.11.0
- v0.10.2
- v0.10.1
- v0.10.0
- v0.9.17
- v0.9.16
- v0.9.15
- v0.9.14
- v0.9.13
- v0.9.12
- v0.9.11
- v0.9.10
- v0.9.9
- v0.9.8
- v0.9.7
- v0.9.6
- v0.9.5
- v0.9.4
- v0.9.3
- v0.9.2
- v0.9.1
- v0.9.0
- v0.8.1
- v0.8.0
- v0.7.2
- v0.7.1
- v0.7.0
This package is auto-updated.
Last update: 2026-10-02 15:43:54 UTC
README
Part of the Hydra PHP framework. Documentation: hydra.williamhleucka.com/docs.
Read-only mirror.
hydrakit/symfony-consoleis developed in hydra-foundation/hydra underpackages/symfony-console, and republished here on every push. A commit pushed to this repository is overwritten by the next one; issues are disabled for that reason, and a pull request opened here cannot be merged. Both belong upstream.
hydrakit/console is deliberately free of any console vendor. A command there
implements CommandInterface, declares its arguments and options as data, and
writes against a ten-method OutputInterface. This package is the default
adapter that runs those commands on
symfony/console, and the only package in
the framework that names it.
The reason is not that the library might be swapped, because it will not be.
It is that Command was extended directly by every command in the framework
and in every application built on it, so a breaking change upstream reached
those applications through Hydra without Hydra's own version number saying
anything about it. One class extends Symfony's now: SymfonyCommand, which
translates a command's declarations into an InputDefinition and its
ExitCode into a process status. SymfonyInput and SymfonyOutput are one
call deep each, because the seam exists to keep the framework off a
third-party base class rather than to replace the drawing — the drawing is the
part worth keeping.
ConsoleApplication is what an app's bin/console builds, so the entrypoint
names no third-party class either. Commands registered with addLazy() are
keyed by class rather than by name, since the name is already on each class's
#[AsCommand]; running one command does not construct the others, which is
what keeps migrate:run from opening the database connection a generator
wants.