utopia-php / cli
一个简单的命令行应用程序管理库
0.19.0
2024-09-05 15:46 UTC
Requires
- php: >=7.4
- utopia-php/di: 0.1.*
- utopia-php/framework: 1.0.*
Requires (Dev)
- laravel/pint: 1.2.*
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^9.3
- squizlabs/php_codesniffer: ^3.6
- swoole/ide-helper: 4.8.8
- dev-master
- 0.19.0
- 0.18.0
- 0.17.0
- 0.16.0
- 0.15.0
- 0.14.0
- 0.13.0
- 0.12.0
- 0.11.0
- 0.10.0
- 0.9.0
- 0.8
- 0.7.3
- 0.7.2
- 0.7.1
- 0.7.0
- 0.6.2
- 0.6.1
- 0.6.0
- 0.5.0
- 0.4.0
- 0.3.0
- 0.2.0
- 0.1.x-dev
- v0.1.0
- dev-PLA-1644
- dev-feat-framework-upgrade
- dev-feat-framework-v2
- dev-feat-logs-combine
- dev-feat-log-streaming
- dev-feat-trait-example
- dev-feat-loop-delay-and-accuracy
- dev-fix-linter
- dev-feat-console-mode
- dev-feat-allow-adding-task
- dev-fix-cli-readme
- dev-fix-exit-codes
- dev-feat-exception-handler
This package is auto-updated.
Last update: 2024-09-19 16:24:40 UTC
README
Utopia 框架 CLI 库是一个简单且轻量级的库,用于扩展 Utopia PHP 框架以能够编写命令行应用程序。这个库的目标是尽可能简单且易于学习和使用。此库由 Appwrite 团队 维护。
尽管这个库是 Utopia 框架 项目的一部分,但它没有依赖关系,可以与其他任何 PHP 项目或框架独立使用。
入门指南
使用 composer 安装
composer require utopia-php/cli
script.php
<?php require_once './vendor/autoload.php'; use Utopia\CLI\CLI; use Utopia\CLI\Console; use Utopia\CLI\Adapters\Generic; use Utopia\Http\Validator\Wildcard; $cli = new CLI(new Generic()); $cli ->task('command-name') ->param('email', null, new Wildcard()) ->action(function ($email) { Console::success($email); }); $cli->run();
然后,从命令行运行
php script.php command-name [email protected]
钩子
有三种类型的钩子,初始化钩子、关闭钩子和错误钩子。初始化钩子在任务执行之前执行。关闭钩子在任务执行后,在应用程序关闭之前执行。最后,错误钩子在任何应用程序生命周期中的错误发生时执行。您可以针对每个阶段提供多个钩子。
require_once __DIR__ . '/../../vendor/autoload.php'; use Utopia\CLI\CLI; use Utopia\CLI\Console; use Utopia\Http\Validator\Wildcard; CLI::setResource('res1', function() { return 'resource 1'; }) CLI::init() inject('res1') ->action(function($res1) { Console::info($res1); }); CLI::error() ->inject('error') ->action(function($error) { Console::error('Error occurred ' . $error); }); $cli = new CLI(); $cli ->task('command-name') ->param('email', null, new Wildcard()) ->action(function ($email) { Console::success($email); }); $cli->run();
日志消息
Console::log('Plain Log'); // stdout
Console::success('Green log message'); // stdout
Console::info('Blue log message'); // stdout
Console::warning('Yellow log message'); // stderr
Console::error('Red log message'); // stderr
执行命令
函数返回退出代码(0 - OK,>0 - 错误)并将标准输出、标准错误写入引用变量。超时变量允许您限制命令可以运行的时间数。
$stdout = ''; $stderr = ''; $stdin = ''; $timeout = 3; // seconds $code = Console::execute('>&1 echo "success"', $stdin, $stdout, $stderr, $timeout); echo $code; // 0 echo $stdout; // 'success' echo $stderr; // ''
$stdout = ''; $stderr = ''; $stdin = ''; $timeout = 3; // seconds $code = Console::execute('>&2 echo "error"', $stdin, $stdout, $stderr, $timeout); echo $code; // 0 echo $stdout; // '' echo $stderr; // 'error'
创建守护进程
您可以使用 Console::loop
命令创建您的 PHP 守护进程。`loop` 方法已经通过可配置的休眠函数处理 CPU 消耗,并且每 5 分钟调用一次 PHP 垃圾回收器。
<?php use Utopia\CLI\Console; include './vendor/autoload.php'; Console::loop(function() { echo "Hello World\n"; }, 1 /* 1 second */);
系统要求
Utopia 框架需要 PHP 7.4 或更高版本。我们建议尽可能使用最新的 PHP 版本。
版权和许可
MIT 许可证 (MIT) http://www.opensource.org/licenses/mit-license.php