synapse/php-shell

PHP 执行 shell 命令的包装器

1.1.1 2016-04-18 16:37 UTC

This package is not auto-updated.

Last update: 2024-09-26 01:02:32 UTC


README

Build Status

简介

PHP Shell 被编写用来为 PHP 中的 shell 命令执行提供面向对象的包装。它允许你从命令执行中获取一个响应对象,包含命令的 stdout、stderr 和退出代码。

文档

基本用法

要创建命令,传递命令的绝对路径进行实例化。你也可以使用 setWorkingDirectory 方法设置命令的执行位置。

$pwd = new Neuron\Shell\Command('/bin/pwd'); // CommandNotFoundException if the command is not executable
$pwd->setWorkingDirectory('/tmp'); // DirectoryDoesNotExistException if the directory is not found
$output = $pwd->execute();
var_dump($output->getStdout()); // string(5) "/tmp"
var_dump($output->getStderr()); // string(0) ""
var_dump($output->getExitCode()); // int(0)

添加标志

$cmd = new Neuron\Shell\Command('/usr/local/bin/my_command');
$cmd->addShortFlag('v');
$cmd->addShortFlag('c', '/tmp/test.json');
$cmd->addLongFlag('version');
$cmd->addLongFlag('config', '/tmp/test.json');

添加参数

$echo = new Neuron\Shell\Command('/bin/echo');
$echo->addArgument('hi there!');

通过另一个命令进行管道操作

$cmd = new Neuron\Shell\Command('/usr/local/bin/my_command');
$cmd2 = new Neuron\Shell\Command('/usr/local/bin/my_command2');
$cmd->pipe($cmd2);
echo $cmd->getCmdString(); // "/usr/local/bin/my_command | /usr/local/bin/my_command2"

搜索输出

使用 wasSuccessful 方法检查命令是否成功。使用 stdoutContainsstderrContains 方法检查输出是否包含特定字符串。

$echo = new \Neuron\Shell\Command('/bin/echo');
$echo->addArgument('fruit banana');
$output = $echo->execute();
var_dump($output->wasSuccessful()); // bool(true)
var_dump($output->stdoutContains('apple')); // bool(false)
var_dump($output->stdoutContains('banana')); // bool(true)

许可证

PHP Shell 是开源软件,许可协议为 MIT 协议

变更日志

1.1.1

  • 添加 README 信息以支持管道功能

1.1.0

  • 添加管道功能

1.0.0

  • 首次发布