Symfony Console Application factory for PSR-11 containers
This package provides a small factory that allows creating Symfony Console Application via PSR-11 compatible container. The code is dead simple, I just tired of copying it between projects :)
Let's imagine that you have an existing application using Laminas Service Manager and it requires some console utility.
First of all you need to add
articus/container-interop-symfony-console package to your composer.json.
Next step is configuring your console application. Here is a small example (it is in YAML just for readability):
#Configuration root for Service Manager dependencies: factories: Symfony\Component\Console\Application: ContainerInteropSymfonyConsole\Factory #Service for your console command, should extend \Symfony\Component\Console\Command\Command My\Command: My\CommandFactory Symfony\Component\Console\Application: name: My App version: 1.2.3 commands: - My\Command
Configuration should be available via
config service of your container. Check
src/ContainerInteropSymfonyConsole/Options.php for full list of available options.
Finally, you need to create PHP-script that will be your console application entrypoint. For example
bin/console.php file with the following content:
#!/usr/bin/php <?php chdir(dirname(__DIR__)); /** @var \Psr\Container\ContainerInterface $container */ $container = /* some code to instantiate your PSR-11 container */; /** @var \Symfony\Component\Console\Application $app */ $app = $container->get(\Symfony\Component\Console\Application::class); $app->run();
Now if you execute
php bin/console.php list your console command should be listed and it should be possible to launch it.