articus/container-interop-symfony-console

Symfony Console Application factory for PSR-11 containers

0.3 2021-12-05 22:18 UTC

This package is auto-updated.

Last update: 2022-11-20 11:42:15 UTC


README

GitHub Actions: Run tests Coveralls Codacy

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.