PHP在命令行中传参的三种方式

PHP在命令行中传参的三种方式

By:0x584A Date:2016-04-13 23:30:32

第一种 通过$argc or $argv

脚本内代码:

<?php
  # $argc 接收参数的个数
  echo "接收到{$argc}个参数";
  # $argv 接收的具体参数
  var_dump($argv);
?>

在终端中直接运行,并接上参数。

php Ex_1.php 0x584A

执行结果:

接收到2个参数array(2) {
  [0] =>
  string(8) "Ex_1.php"
  [1] =>
  string(6) "0x584A"
}
第二种 通过getopt()函数

脚本内代码:

<?php
   /*
    * getopt参数说明
    * a 定义参数名 后面的:代表必选,与后面的值可以用空格分开
    * ::代表可选项,与值之间不允许又空格
    */
    $param_arr = getopt('a:b::');
    var_dump($param_arr);
?>

在终端中直接运行,并接上参数。

php Ex_2.php -a 0x584A -bJk

执行结果:

array(2) {
  'a' =>
  string(6) "0x584A"
  'b' =>
  string(2) "Jk"
}

如果我们输入的是:php Ex_2.php -a 0x584A -b 123

执行结果:'b' => bool(false)

因为-b参数中间有空格,则返回结果中接收不到该值。

第三种 使用CLI
常量名称 描述
STDIN 标准的输入设备
STDOUT 标准的输出设备
STDERR 标准的输出设备

脚本内代码:

<?php
   # STDOUT 代表的标准输入 STDIN 代表的标准输出
   fwrite(STDOUT,'请输入您的博客名称:');
   # fwrite 表示往标准输出写字符串,fgets 命令行出现等待输入
   $arg = trim(fgets(STDIN));
   echo "您输入的名称:".$arg."\n";
?>

在终端中直接运行,并接上参数。

php Ex_3.php

执行结果:

请输入您的博客名称:jgeek.cn
您输入的名称:jgeek.cn