articus / container-interop-symfony-console
Symfony Console Application factory for PSR-11 containers
Installs: 3 682
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
Requires
- php: ^7.1|^8.0
- psr/container: ^1.0|^2.0
- symfony/console: ^4.0|^5.0|^6.0
Requires (Dev)
- kahlan/kahlan: ^5.1
- mockery/mockery: ^1.3
- symfony/event-dispatcher: ^4.0|^5.0|^6.0
Suggests
- symfony/event-dispatcher: If you want to subscribe for console events without providing separate event dispatcher service
This package is auto-updated.
Last update: 2024-10-29 05:10:42 UTC
README
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.