-
博文分类专栏
- Jquery基础教程
-
- 文章:(15)篇
- 阅读:46566
- shell命令
-
- 文章:(42)篇
- 阅读:154239
- Git教程
-
- 文章:(36)篇
- 阅读:234850
- leetCode刷题
-
- 文章:(76)篇
- 阅读:131794
-
PHP命令行传递参数2018-06-23 10:22 阅读(7144) 评论(0)
在以非命令行模式运行PHP的时候,我们可以通过$_GET、$_POST、$_REQUEST来接受get或是post参数,但是以命令行方式运行的话,怎么传递参数以接受参数呢?关于命令行的特点,可以直接看官方文档:http://php.net/manual/zh/features.commandline.php
一、PHP命令行方式(CLI)传递参数
我们可以类比shell文件的传参,如下:
//test.sh
#! /bin/bash echo "一共传递了$# 个参数" echo "第一个参数:"$1
传递参数方式如下:
其实,在之前的一篇文章“shell脚本中第一行#!/bin/bash作用是什么的呢”中提到,我们可以将#!后面的/bin/bash可执行文件,改为其他的可执行文件。这里,我们改为PHP,如下:
#! /usr/bin/php <?php echo "hello world";
调用的时候,可以 ./test.sh findme
其实,php命令行方式传递参数,也是类似shell脚本的传参方式。如下:
php test.php www findme wang
备注:多个参数,通过空格分割。
二、PHP命令行方式(CLI)接受参数
1、通过全局变量方式获取
在官方文档中提到“传递给脚本的参数可在全局变量 $argv 中获取,全局变量 $argc 存有 $argv 数组中成员变量的个数”,所以,我们可以通过以下方式获得命令行方式的传递参数。
<?php echo "参数个数:", $argc, PHP_EOL; echo "所有参数:", PHP_EOL; print_r($argv);
2、从$_SERVER中读取
通过打印$_SERVER,如下:
所以在命令行模式中,可以通过$_SERVER来获取参数。关于$_SERVER更多内容,可以查看“$_SERVER详解”。
3、通过getopt函数来实现
更多的时候,我们更希望传递key => val格式的参数,比如:
php test.php --web www.findme.wang
但是前面两种接受方式,却认为这是传递了两个参数。这个时候,getopt就显得很重要。
var_dump(getopt("", ["web:"]));
备注:这里之所以使用 --,传递参数,而不是使用双引号。
同时,getopt还支持“=”号连接key和val,如下: