articus / container-interop-symfony-console
PSR-11 容器为 Symfony Console 应用创建工厂
0.3
2021-12-05 22:18 UTC
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-08-29 04:37:17 UTC
README
本包提供了一个小型的工厂,允许通过 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
,你的控制台命令应该被列出,并且应该可以启动它。