netglue / laminas-symfony-console
Requires
- php: >=7.3
- psr/container: ^1.0
- symfony/console: ^5
Requires (Dev)
- doctrine/coding-standard: ^7.0
- laminas/laminas-component-installer: ^2.1
- laminas/laminas-servicemanager: ^3.4
- phpunit/phpunit: ^9.0
- roave/security-advisories: dev-master
Suggests
- laminas/laminas-cli: This package is abandoned, use laminas-cli instead
This package is auto-updated.
Last update: 2020-06-17 21:20:17 UTC
README
项目已废弃
Laminas CLI 已发布 - 请使用它: https://github.com/laminas/laminas-cli
简介
这个非常小的组件提供了一些 PSR-11 工厂和有观点的配置,以便快速在 Mezzio 应用程序中启动 Symfony 的 CLI 工具(它也可能与 Laminas MVC 兼容,但我现在已经不再真正使用了...)。
在编写本文时,我并不知道 laminas/laminas-cli,它做了这个库所做的一切,还有更多。
一旦 laminas-cli 发布,我可能会杀死这个库,所以你可能只需要去看看官方的 Laminas 组件。话虽如此,它还没有发布,所以如果你想现在就安装一些东西,这个库也会加载在 config.laminas-cli.commands
下列出的命令,所以你可以在那里列出你的命令,然后在它发布时用 Laminas CLI 交换这个库。
无论如何,这个库假设你可能会使用一个 PSR-11 兼容的容器,并且你可能会想要使用这个容器来懒加载你的控制台命令。
安装
composer require netglue/laminas-symfony-console
在 Mezzio 应用程序中安装期间,你应该会像其他 laminas 组件一样被要求注入配置,这得益于Laminas 组件安装程序。如果你选择不这样做,或者想要手动设置,那么你应该在你的配置中包含 src/ConfigProvider.php
。
方便的二进制文件…
提供“二进制”文件,以便你设置完成后可以调用 vendor/bin/cli my:command
。你可以通过在 console.name
中设置配置值来设置控制台上显示的应用程序名称。
由于环境和路径不同,这个“二进制”将简单地尝试定位项目的根目录,然后在该常规位置寻找 config/container.php
以获取容器。有很大可能性这可能在你的设置中不起作用,但创建这样的二进制文件相当简单,看起来可能如下所示
#!/usr/bin/env/php <?php declare(strict_types=1); use Psr\Container\ContainerInterface; use Symfony\Component\Console\Application; $container = require 'path/to/file/returning/container.php'; assert($container instanceof ContainerInterface); $app = $container->get(Application::class); $app->run();
配置
通过配置映射 command:name => CommandName::class
,将命令提供给基于容器的命令加载器,例如
return [ 'console' => [ 'name' => 'My CLI Application', 'auto_add_invokable_factory' => true, 'commands' => [ 'my:command' => \My\Console\DoAThing::class, 'my:other-cmd' => \My\Console\OtherThing::class, ], ], 'dependencies' => [ 'factories' => [ \My\Console\DoAThing::class => \My\Console\DoAThingFactory::class, ], ], // Also, prefer listing commands here instead of under console.commands for future interop with laminas-cli 'laminas-cli' => [ 'commands' => [ 'my::command' => \Some\Command::class, ], ], ];
自动添加可调用工厂…
预期你会为你的命令编写工厂,但容器加载器工厂将观察是否 a) 容器是 Laminas 服务管理器的一个实例,以及 b) 是否启用了该功能,并自动注册任何不在容器中存在的命令的可调用工厂。
此功能为可选功能,因此您必须通过将console.auto_add_invokable_factory
设置为true来显式启用它。
结束。