pkg6/console-cli

Use PHP to integrate common commands

dev-main 2025-08-08 17:14 UTC

This package is auto-updated.

Last update: 2025-08-08 17:15:07 UTC


README

console.cli 是一个功能强大的 PHP 命令行工具库,用于集成常见的命令行功能,包括计划任务调度和 Phar 打包等。

项目特点

  • 简洁易用的命令行接口
  • 强大的计划任务调度系统(基于 cron 表达式)
  • 便捷的 Phar 打包功能
  • 良好的扩展性,可以轻松添加自定义命令

安装

全局命令安装

composer global require pkg6/console-cli

使用 Composer 安装

composer require pkg6/console-cli

快速开始

初始化项目

使用初始化命令快速创建一个新的 console.cli 项目:

cd demo && console-cli init

Phar 打包

console.cli 提供了强大的 Phar 打包功能,可以将项目打包成单个 Phar 文件,方便分发和使用。

使用方法

console-cli phar:build [options]

可用选项

  • -p, --path=PATH: 项目根路径,默认为当前目录。
  • -b, --bin=BIN: 默认执行的脚本路径,默认为 'bin/console-cli'。
  • --name=NAME: 设置 Phar 文件名称,如果不提供则使用项目名称。
  • --phar-version=VERSION: 要编译的项目版本。
  • -M, --mount=MOUNT: 要挂载的路径或目录,可以多次指定。

使用示例

# 基本用法(在当前目录构建)
console-cli phar:build

# 指定项目根路径
console-cli phar:build --path=/path/to/your/project

# 指定 Phar 文件名称
console-cli phar:build --name=myapp

# 指定版本
console-cli phar:build --phar-version=1.0.0

# 挂载额外的目录
console-cli phar:build --mount=config/ --mount=resources/

# 组合使用多个选项
console-cli phar:build --path=/path/to/your/project --name=myapp --phar-version=1.0.0 --mount=config/

注意事项

  1. 确保 phar.readonly 配置已设置为 Off,否则无法创建 Phar 文件。
  2. 项目必须已经安装了依赖(执行过 composer install)。
  3. 如果不指定 Phar 文件名称,将默认使用 composer.json 中的项目名称。

计划任务和自定命令

你可以轻松添加自定义命令到应用中。下面是创建和使用自定义命令的完整示例:

创建创建基础app类

<?php

namespace App;

use Pkg6\Console\Cli\App;
use Pkg6\Console\Cli\Scheduling\Schedule;

class MyApp extends App
{
    protected function schedule(Schedule $schedule)
    {
        // 每分钟执行一次命令
        $schedule->command('your:command')
                 ->everyMinute();
                  
        // 每两分钟执行一次
        $schedule->command('another:command')
                 ->everyTwoMinutes();
                  
        // 每天凌晨 1 点执行
        $schedule->exec('php script.php')
                 ->dailyAt('01:00');
                  
        // 使用自定义 cron 表达式(每小时的第 15 分钟执行)
        $schedule->call(function () {
            // 执行一些操作
            echo '任务执行成功';
        })->cron('15 * * * *');
    }
}

$app = new MyApp();
$app->handle();

创建命令类

创建一个新的命令类:

<?php

namespace App;

use Pkg6\Console\Command;
use Symfony\Component\Console\Input\InputOption;

class GreetingCommand extends Command
{

    protected $name = 'greeting';
    protected $description = 'greeting cmd';

    protected function handle()
    {
        //TODO
    }
}

可参考laravel命令行进行书写

注册命令

在应用中注册自定义命令:

<?php

use App\MyApp;
use App\Commands\GreetingCommand;

// 创建应用实例
$app = new MyApp();
// 注册自定义命令
$app->addCommand(GreetingCommand::class);

// 运行应用
$app->handle();

使用命令

php console-cli greeting

贡献指南

  1. Fork 项目
  2. 创建功能分支 (git checkout -b feature/fooBar)
  3. 提交更改 (git commit -am 'Add some fooBar')
  4. 推送到分支 (git push origin feature/fooBar)
  5. 创建新的 Pull Request

许可证

本项目使用 MIT 许可证。详情请查看 LICENSE 文件。