chh / commander

使调用系统命令变得快速简单。

dev-master 2012-10-17 11:39 UTC

This package is not auto-updated.

Last update: 2024-09-14 12:31:19 UTC


README

Commander 是一个简单的命令包装器,它将系统命令作为静态方法提供。

安装

通过 Composer 安装

1. 将以下内容添加到您的 composer.json

{
    "require": {
        "chh/commander": "*@dev"
    }
}

2. 然后在您的项目目录中运行此命令

# You can skip this if you already have composer
wget https://getcomposer.org.cn/composer.phar
php composer.phar install

3. 在您的代码中添加以下内容

require "vendor/autoload.php";

用法

Commander 将系统命令作为 Commander 类的静态方法提供。当以方法的形式调用命令时,Commander 会查找您的 PATH 环境变量中的方法名

<?php
use Commander as cmd;

echo cmd::ifconfig();

要调用包含短横线的命令名,只需在调用方法时将短横线替换为下划线。要调用 apt-get,您将调用 apt_get 方法。Commander 首先查找 apt_get,如果没有找到该命令,则再次查找,将下划线替换为短横线。

cmd::apt_get("install", "openarena");

将传递给方法调用的所有参数都作为参数传递给系统命令。

标志

要将标志作为键值对传递给第一个参数

# apt-get -y upgrade
cmd::apt_get(array('y' => true), "upgrade");

# rm -r -f /some/dir
cmd::rm(array('r' => true, 'f' => true), "/some/dir");

您也可以将标志作为参数列表的一部分传递

# git clone --branch development git://github.com/CHH/Commander
cmd::git("clone", "--branch", "development", "git://github.com/CHH/Commander");

# rm -rf /some/dir
cmd::rm("-rf", "/some/dir");

奇怪的名字或绝对路径

要调用带有绝对路径的命令或包含一些非常奇怪字符的命令,请使用 command() 方法获取命令实例

$ffmpeg = cmd::command("/usr/local/custom-ffmpeg/bin/ffmpeg");
$ffmpeg($movieFile);

管道

管道通过函数组合完成

# Removes all "require_once" occurences and comments them out.
cmd::xargs(
    cmd::find($sourceDir, "-print0", "-name", "*.php"), 
    "-0",
    "sed", "-E", "-i", "-e", 's/^(require_once)/\/\/ \1/g'
);

错误

当命令以大于零的退出状态退出时,将抛出 Commander\ErrorException。此异常将代码设置为命令的退出状态,并且具有 getErrorOutput() 方法,该方法返回命令写入 STDERR 的所有内容。

许可

MIT 许可证

版权所有 (c) 2011 Christoph Hochstrasser

特此授予任何获得本软件及其相关文档副本(“软件”)的人免费使用软件的权利,不受任何限制,包括但不限于使用、复制、修改、合并、发布、分发、转授和/或销售软件副本的权利,并允许向获得软件的人提供软件以供其使用,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、针对特定目的的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论这些责任是基于合同、侵权或其他方式,源于、因之或与此软件或软件的使用或其他交易有关。