demvsystems / exec
exec 和其结果的包装器
0.2.1
2022-07-27 13:47 UTC
Requires
- php: >=5.5.0
Requires (Dev)
- phpunit/phpunit: 4.*.*
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。有关可用的应用程序及其工作方式的完整参考,请参阅 应用程序维基条目。
您还可以编写自己的应用程序包装器。有关如何操作,请参阅 此处。