yiisoft / yii-console
带有附加功能的 Symfony 控制台包装器
Requires
- php: ^8.0
- psr/container: ^1.0|^2.0
- psr/event-dispatcher: ^1.0
- psr/log: ^1.0|^2.0|^3.0
- symfony/console: ^5.4|^6.0|^7.0
- symfony/event-dispatcher-contracts: ^2.2|^3.0
- yiisoft/friendly-exception: ^1.0
Requires (Dev)
- maglnet/composer-require-checker: ^3.8|^4.4
- phpunit/phpunit: ^9.5
- rector/rector: ^1.0.0
- roave/infection-static-analysis-plugin: ^1.16
- vimeo/psalm: ^4.30|^5.20
- yiisoft/config: ^1.3
- yiisoft/di: ^1.2
- yiisoft/test-support: ^3.0
README
Yii 控制台
Yii 控制台包提供了一个可以添加到应用程序的控制台。此控制台基于 Symfony 控制台。以下是一些额外功能:
- 延迟命令加载;
SymfonyEventDispatcher
类,允许使用任何与 PSR-14 兼容的事件调度器与 Symfony 控制台;ErrorListener
用于将控制台错误记录到任何与 PSR-3 兼容的记录器;- 控制台命令
serve
用于运行 PHP 内置的 Web 服务器; - 在控制台应用程序中引发
ApplicationStartup
和ApplicationShutdown
事件; - 包含用于定义控制台命令退出代码常量的
ExitCode
类; ConsoleBufferedOutput
用于包装ConsoleOutput
并缓冲控制台输出。
要求
- PHP 8.0 或更高版本。
安装
可以使用 Composer 安装此包。
composer require yiisoft/yii-console
通用用法
如果您使用的是 Yii 3 标准应用程序模板之一,则可以通过 ./yii <command>
访问控制台。
如果不这样,则在最简单的用法中,在您的控制台入口脚本中执行以下操作
#!/usr/bin/env php <?php declare(strict_types=1); use Yiisoft\Di\Container; use Yiisoft\Di\ContainerConfig; use Yiisoft\Yii\Console\Application; use Yiisoft\Yii\Console\CommandLoader; require_once __DIR__ . '/vendor/autoload.php'; $app = new Application(); $app->setCommandLoader(new CommandLoader( // Any container implementing `Psr\Container\ContainerInterface` for example: new Container(ContainerConfig::create()), // An array with command names as keys and service IDs as values: ['my/custom' => MyCustomCommand::class], )); $app->run();
由于 \Yiisoft\Yii\Console\CommandLoader
使用命令的延迟加载,因此需要在创建命令时在静态属性中指定名称和描述
use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Yiisoft\Yii\Console\ExitCode; #[AsCommand( name: 'my:custom', description: 'Description of my custom command.' )] final class MyCustomCommand extends Command { protected function configure(): void { // ... } protected function execute(InputInterface $input, OutputInterface $output): int { // ... return ExitCode::OK; } }
运行控制台入口脚本并使用您的命令
your-console-entry-script my/custom
在命名命令时,请使用
:
作为分隔符。例如:user:create
、user:delete
等。
由于该包基于 Symfony 控制台组件,请参阅其文档以获取有关如何使用二进制文件和创建您自己的命令的详细信息。
别名和隐藏命令
要配置命令,请在 \Yiisoft\Yii\Console\CommandLoader
配置中设置名称和别名。总是忽略命令类本身的名称和别名。
可以通过在名称前加上 |
来将命令标记为隐藏。
'yiisoft/yii-console' => [ 'commands' => [ 'hello' => Hello::class, // name: 'hello', aliases: [], hidden: false 'start|run|s|r' => Run::class, // name: 'start', aliases: ['run', 's', 'r'], hidden: false '|hack|h' => Hack::class, // name: 'hack', aliases: ['h'], hidden: true ], ],
运行 PHP 内置的 Web 服务器
您可以使用以下命令启动本地内置的 Web 开发服务器:
./yii serve
默认情况下,您的应用程序可以通过浏览器在 http://localhost:8080 访问。要配置默认设置,请在 \Yiisoft\Yii\Console\CommandLoader
配置中设置选项。
'yiisoft/yii-console' => [ 'serve' => [ 'appRootPath' => null, 'options' => [ 'address' => '127.0.0.1', 'port' => '8080', 'docroot' => 'public', 'router' => 'public/index.php', ], ], ],
或者,您也可以通过控制台选项传递设置。
提示:要启用 XDebug 运行 Web 服务器,请将
--xdebug 1
传递给命令。
要查看可用的选项,请运行 ./yii serve --help
。
文档
如果您需要帮助或有疑问,Yii 论坛 是一个好去处。您还可以查看其他 Yii 社区资源。
许可
Yii控制台是免费软件。它遵循BSD许可协议发布。请参阅许可证
以获取更多信息。
由Yii软件维护。