Add CLI Tool into PHP-DI ContainerBuilder (Slim 4)

my console.php

<?php

require __DIR__ . '/../vendor/autoload.php';

use App\Command\ExampleCommand;
use Symfony\Component\Console\Application;

$application = new Application();

$application->add(new ExampleCommand());

$application->run();

my app.php

<?php

declare(strict_types=1);

use DI\ContainerBuilder;

use Slim\Factory\AppFactory;

use Dotenv\Dotenv;

require __DIR__ . '/../vendor/autoload.php';

$dotenv = Dotenv::createImmutable(__DIR__, '/../.env');

$dotenv->load();

// Instantiate PHP-DI ContainerBuilder

$containerBuilder = new ContainerBuilder();

if (false) { // Should be set to true in production

$containerBuilder->enableCompilation(__DIR__ . '/../var/cache');

}

// Set up settings

$settings = require __DIR__ . '/../app/settings.php';

$settings($containerBuilder);

// Set up dependencies

$dependencies = require __DIR__ . '/../app/dependencies.php';

$dependencies($containerBuilder);

// Set up repositories

$repositories = require __DIR__ . '/../app/repositories.php';

$repositories($containerBuilder);

// Build PHP-DI Container instance

$container = $containerBuilder->build();

// Instantiate the app

AppFactory::setContainer($container);

$app = AppFactory::create();

$callableResolver = $app->getCallableResolver();

// Register middleware

$middleware = require __DIR__ . '/../app/middleware.php';

$middleware($app);

// Register routes

$routes = require __DIR__ . '/../app/routes.php';

$routes($app);

// add bin/console.php

$commands = require __DIR__ . '/../bin/console.php';

$commands($app);

return $app;