PHP 命令行包装器:ShellWrap

jopen 11年前

ShellWrap 可以让你在PHP代码里使用强大的 Linux/Unix 命令行工具。

功能特性

  • Flexible and sexy syntax.
  • Exceptions are thrown if the executable returns an error.
  • Paths to binaries are automatically resolved.
  • All arguments are properly escaped.

示例代码:

<?php   require_once 'vendor/autoload.php';  use MrRio\ShellWrap as sh;    // List all files in current dir  echo sh::ls();    // Checkout a branch in git  sh::git('checkout', 'master');    // You can also pipe the output of one command, into another  // This downloads example.com through cURL, follows location, then pipes through grep to   // filter for 'html'  echo sh::grep('html', sh::curl('http://example.com', array(      'location' => true  )));    // Touch a file to create it  sh::touch('file.html');    // Remove file  sh::rm('file.html');    // Remove file again (this fails, and throws an exception because the file doesn't exist)    try {      sh::rm('file.html');  } catch (ShellWrapException $e) {      echo 'Caught failing sh::rm() call';  }      // This throws an exception, as 'invalidoption' is not a valid argument  try {      echo sh::ls(array('invalidoption' => true));  } catch (ShellWrapException $e) {      echo 'Caught failing sh::ls() call';  }    // Commands can be written multiple ways  sh::git('reset', array('hard' => true), 'HEAD');  sh::git('reset', '--hard', 'HEAD');  sh::git(array('reset', '--hard', 'HEAD'));    // Arguments passed in are automatically escaped, this expands to  // date --date '2012-10-10 10:00:00'  echo sh::date(array(      'date' => '2012-10-10 10:00:00'  ));    // If arg keys are one letter, is assumes one dash prefixing it  // date -d '2012-10-10 10:00:00'  echo sh::date(array(      'd' => '2012-10-10 10:00:00'  ));      ?>

项目主页:http://www.open-open.com/lib/view/home/1388455413813