exec 和其结果的包装器

0.2.1 2022-07-27 13:47 UTC

This package is auto-updated.

Last update: 2024-09-27 18:39:53 UTC


README

exec 是 php 的 exec() 命令的包装器,允许通过链式调用构建 CLI 命令。

命令类

一切从 Command 类开始,它允许你以以下方式创建任何命令

echo Command::create()
  ->app('echo')
  ->input('Hello World')
  ->exec();
//prints out "Hello World"

这将创建一个执行 echo 应用并带有输入 "Hello World" 的命令,并立即执行它。有关 Command 可以做什么的完整参考,请访问 相关维基条目

异步命令

你还可以通过将 async() 方法添加到命令中,异步执行一个命令。之前的 echo 示例将看起来像这样

$async = Command::create()
  ->app('echo')
  ->input('Hello World')
  ->async()
  ->exec();

这将返回一个 Async 对象。使用此对象,你可以做

  • 检查命令是否仍在运行
  • 检查是否有语法相似的命令正在运行
  • 终止命令
  • 终止所有语法相似的命令

当然,上面的例子没有太大意义,因为我们永远不会看到结果。因此,我们可以将结果管道输入到文件中。

$async = Command::create()
  ->app('echo')
  ->input('Hello World')
  ->async()
  ->path('hello.txt')
  ->exec();

这将写入一个名为 hello.txt 的文件,其中包含我们命令的内容,一旦它终止。有关异步命令的更多信息,请参阅 维基页面

##应用程序而不是在应用程序调用中定义每个应用程序的字符串,您还可以使用一些预定义的应用程序,这些应用程序封装了一些重复性工作。例如,考虑 PhpApp。通常,您会像这样构建命令来获取 PHP 版本

Command::create()
  ->app('php')
  ->arg('v')
  ->exec();

但是,使用 PhpApp,您可以去掉字符串参数

Command::create()
  ->phpApp()
  ->arg('v')
  ->exec();

已经有一些其他高级应用程序,它们封装了它们的特殊语法,例如 XArgsApp。有关可用的应用程序及其工作方式的完整参考,请参阅 应用程序维基条目

您还可以编写自己的应用程序包装器。有关如何操作,请参阅 此处