articus/container-interop-symfony-console

PSR-11 容器为 Symfony Console 应用创建工厂

0.3 2021-12-05 22:18 UTC

This package is auto-updated.

Last update: 2024-08-29 04:37:17 UTC


README

GitHub Actions: Run tests Coveralls Codacy 本包提供了一个小型的工厂,允许通过 PSR-11 兼容容器创建 Symfony Console Application。代码非常简单,我只是厌倦了在不同项目间复制它 :)

使用 Laminas Service Manager (前身为 Zend Service Manager) 的应用程序快速入门

让我们假设你有一个使用 Laminas Service Manager 的现有应用程序,并且它需要一些控制台工具。首先,你需要将 articus/container-interop-symfony-console 包添加到你的 composer.json 中。下一步是配置你的控制台应用程序。这里是一个小的例子(为了可读性,配置文件是 YAML 格式)

#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

配置应该可以通过容器中的 config 服务获取。查看 src/ContainerInteropSymfonyConsole/Options.php 获取所有可用选项的完整列表。

最后,你需要创建一个 PHP 脚本,它将成为你的控制台应用程序的入口点。例如,创建一个名为 bin/console.php 的文件,内容如下

#!/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();

现在,如果你执行 php bin/console.php list,你的控制台命令应该被列出,并且应该可以启动它。