yiisoft/yii-console

带有附加功能的 Symfony 控制台包装器

2.2.0 2024-02-17 13:10 UTC

This package is auto-updated.

Last update: 2024-08-24 06:06:46 UTC


README

Yii

Yii 控制台


Latest Stable Version Total Downloads Build status Code Coverage Scrutinizer Quality Score Mutation testing badge static analysis type-coverage

Yii 控制台包提供了一个可以添加到应用程序的控制台。此控制台基于 Symfony 控制台。以下是一些额外功能:

  • 延迟命令加载;
  • SymfonyEventDispatcher 类,允许使用任何与 PSR-14 兼容的事件调度器与 Symfony 控制台;
  • ErrorListener 用于将控制台错误记录到任何与 PSR-3 兼容的记录器;
  • 控制台命令 serve 用于运行 PHP 内置的 Web 服务器;
  • 在控制台应用程序中引发 ApplicationStartupApplicationShutdown 事件;
  • 包含用于定义控制台命令退出代码常量的 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:createuser: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软件维护。

支持项目

Open Collective

关注更新

Official website Twitter Telegram Facebook Slack