PHP cli 모드에서 매개변수를 얻는 방법

jacklove
풀어 주다: 2023-03-31 06:22:02
원래의
1878명이 탐색했습니다.

php가 cli 모드에서 매개변수를 수신하는 방법에는 두 가지가 있습니다

1. argv 배열을 사용하세요
2. getopt 메서드를 사용하세요

1. argv 배열을 사용하세요

예: PHP를 실행하고 세 가지를 전달해야 합니다. 매개변수 (유형=news, is_hot=1, 제한=5)

Create test.php

<?phpprint_r($argv);?>
로그인 후 복사

명령줄에서 실행

php test.php news 1 5
로그인 후 복사
로그인 후 복사

출력:

Array(
    [0] => test.php
    [1] => news
    [2] => 1
    [3] => 5)
로그인 후 복사

argv[0]이 현재의 이름임을 알 수 있습니다. 실행된 php 파일이고 argv[1] ~argv[3]은 전달된 매개변수의 값입니다
argv[1]은 type
argv[2]의 값과 같습니다 is_hot
argv[3]의 값과 같습니다 는 Limit 값과 같습니다
이러한 방식으로 전달된 매개변수는 argv 배열을 기반으로 얻을 수 있습니다. 후속 처리 작업을 수행합니다.

단점:
argv 배열을 사용하면 전달된 매개변수를 순서대로 가져올 수 있습니다. 그러나 이를 얻은 후에는 해당 처리를 수행해야 합니다. 위의 예에서 argv[1]은 유형 매개변수에 해당하고, argv[2]는 is_hot 매개변수에 해당하며, argv[3]은 제한 매개변수에 해당해야 합니다. . 그리고 전송 과정에서 매개변수를 잘못된 순서로 쓰면 프로그램 오류가 발생합니다.

예:

<?php$param = array();$param[&#39;type&#39;] = $argv[1];$param[&#39;is_hot&#39;] = $argv[2];$param[&#39;limit&#39;] = $argv[3];
print_r($param);?>
로그인 후 복사

Execute

php test.php news 1 5
로그인 후 복사
로그인 후 복사

출력:

Array(
    [type] => news
    [is_hot] => 1
    [limit] => 5)
로그인 후 복사

전달 순서가 다르면 얻은 매개변수 값이 달라져 후속 프로그램 오류가 발생합니다.

실행

php test.php 1 5 news
로그인 후 복사

출력:

Array(
    [type] => 1
    [is_hot] => 5
    [limit] => news
)
로그인 후 복사

따라서 argv 배열에 매개변수를 전달할 때 매개변수가 전달되는 순서에 주의해야 합니다.

2. 명령줄 매개변수 목록에서 옵션을 가져오려면 getopt 메소드

getopt를 사용하세요.

array getopt ( string $options [, array $longopts ] )
로그인 후 복사

매개변수:
options
이 문자열의 각 문자는 수신 스크립트 옵션과 일치하는 옵션 문자로 처리됩니다. 단일 하이픈(-)으로 시작합니다. 예를 들어, 옵션 문자열 "x"는 -x 옵션을 식별합니다. a-z, A-Z 및 0-9만 허용됩니다.

longopts
옵션 배열. 이 배열의 각 요소는 옵션 문자열로 처리되며 두 개의 하이픈(-)이 있는 스크립트에 전달된 옵션과 일치합니다. 예를 들어, 긴 옵션 요소 "opt"는 옵션 -opt를 식별합니다.

옵션에는 다음 요소가 포함될 수 있습니다.
단일 문자(값은 허용되지 않음)
콜론이 뒤에 오는 문자(이 옵션에는 값이 필요함)
문자 뒤에 콜론 두 개가 따라옴(이 옵션의 값은 선택 사항임) )
Options 값은 문자열 다음의 첫 번째 매개변수입니다. 값 앞에 공백이 있어도 상관 없습니다.

options와 longopts의 형식은 거의 동일합니다. 유일한 차이점은 longopts는 옵션의 배열이어야 하고(각 요소는 옵션임) 옵션에는 문자열이 필요하다는 것입니다(각 문자는 옵션임).
전달된 값의 구분 기호에는 공백이나 =를 사용할 수 있습니다.
선택적 값은 공백을 구분 기호로 허용하지 않으며 =만 구분 기호로 사용할 수 있습니다.

반환 값
이 함수는 옵션/매개변수 쌍을 반환하고 실패 시 FALSE를 반환합니다.
옵션 구문 분석은 옵션이 아닌 첫 번째 발견 시 종료되며, 그 이후의 모든 항목은 삭제됩니다.

1. 옵션 인스턴스 사용

a, b, c는 필수 값입니다. ​​
d는 선택 값입니다.
e는 허용되지 않는 값입니다.

<?php$param = getopt(&#39;a:b:c:d::e&#39;);
print_r($param);?>
로그인 후 복사

Execute

php test.php -a 1 -b 2 -c 3 -d=4 -e 5
로그인 후 복사

출력:

Array(
    [a] => 1
    [b] => 2
    [c] => 3
    [d] => 4
    [e] => 
)
로그인 후 복사

2. , is_hot은 필수 값입니다.

limit는 선택 값입니다.

expire는 허용되지 않는 값입니다.

<?php$longopt = array(    &#39;type:&#39;,    &#39;is_hot:&#39;,    &#39;limit::&#39;,    &#39;expire&#39;);$param = getopt(&#39;&#39;, $longopt);
print_r($param);?>
로그인 후 복사
로그인 후 복사

Execute

php test.php --type news --is_hot 1 --limit=10 --expire=100
로그인 후 복사

출력:

Array(
    [type] => news
    [is_hot] => 1
    [limit] => 10
    [expire] => 
)
로그인 후 복사

3. 옵션이 아닌 첫 번째 항목을 찾고 후속 인스턴스는 무시합니다.

<?php$longopt = array(    &#39;type:&#39;,    &#39;is_hot:&#39;,    &#39;limit::&#39;,    &#39;expire&#39;);$param = getopt(&#39;&#39;, $longopt);
print_r($param);?>
로그인 후 복사
로그인 후 복사

Execute

php test.php --type news --is_hots 1 --limit=10 --expire=100
로그인 후 복사

출력:

Array
(
    [type] => news
)
로그인 후 복사

is_hots는 옵션 값이 아니기 때문에(is_hot이 정의됨) 여기 이후의 모든 매개변수는 삭제됩니다.


요약: argv 배열을 사용하여 매개변수를 전달하면 방법이 간단하고 구현하기 쉽습니다. 매개변수의 순서는 틀릴 수 없으며 매개변수를 얻은 후에 해당 처리를 수행해야 합니다. getopt 메소드를 사용하면 매개변수 이름을 사용할 수 있으며, 매개변수의 순서는 상대적으로 표준화되어 임의적일 수 있습니다. (권장)

이 글에서는 php cli 모드에서 매개변수를 얻는 방법을 소개합니다. 더 많은 관련 내용은 php 중국어 홈페이지를 참고해주세요.

관련 권장 사항:

PHP 코드를 통해 배열의 지정된 키 값을 재귀적으로 얻는 방법

PHP를 통해 1G 파일 크기 읽기

PHP 클래스 초기화 함수 코드 설명

위 내용은 PHP cli 모드에서 매개변수를 얻는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿