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 :)
Quick start for application using Laminas Service Manager (fka Zend Service Manager)
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.