命令行执行php脚本获取传入参数的方法—$argv和$argc

在命令行里执行php脚本时,我们可以给它参数$argv,它是一个数组,形如

图片 

第一个元素保存的是脚本的文件名,其他是我们输入的参数,(参数是以空格分开). 
$argc 保存着$argv的长度.
习惯用法php php脚本  参数1   参数2   参数3  ...参数n,
此方法在命令行中使用,定时任务用,linux中用crontab来跑 


命令行执行php脚本参数获取工具类,实现代码如下:

/**
 * 命令行执行php脚本获取输入参数.
 * 
 * 如命令行运行:php test.php --number=10
 * 获取传入参数 `number`,使用方法:
 * $options = ConsoleOptions::ParseFromArgv();
 * $number = $options->getOption('number');
 */
 
class ConsoleOptions
{
    private $options = array();
    private $values = array();
    public function addOptionValue($k, $v)
    {
        if (! isset($this->options[$k]))
            $this->options[$k] = $v;
        else {
            if (! is_array($this->options[$k]))
                $this->options[$k] = array($this->options[$k]);
            $this->options[$k][] = $v;
        }
    }

    public function addValue($v)
    {
        $this->values[] = $v;
    }

    public function getOption($k, $def = null)
    {
        return isset($this->options[$k]) ? $this->options[$k] : $def;
    }

    public function getValues()
    {
        return $this->values;
    }

    /**
     * @static
     * @return ConsoleOptions
     */
    static public function parseFromArgv()
    {
        global $argv, $argc;
        $options = new ConsoleOptions();
        for ($i = 1; $i < $argc; $i++) {
            $s = $argv[$i];
            if (substr($s, 0, 2) == '--') {
                $s = substr($s, 2);
                $a = explode('=', $s, 2);
                if (count($a) == 2)
                    $options->addOptionValue($a[0], $a[1]);
                else
                    $options->addOptionValue($a[0], true);
            } else {
                $options->addValue($s);
            }
        }
        return $options;
    }
}


版权及转载说明

本站原创、转载文章欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区

本站转载文章版权归原作者所有,如发现本站文章涉嫌侵权请点击「联系我们」反馈,本站将立即给予删除

转载请注明:文章转载自:全分享社区 「http://www.aweb.cc

本文标题:命令行执行php脚本获取传入参数的方法—$argv和$argc

本文地址:http://www.aweb.cc/Article/detail/id/328.html

PHP中$_SERVER的详细参数与说明 <<上一篇 下一篇>>php多线程实现方法之pcntl_for