PHP에서 명령행 매개변수를 가져오는 방법

PHP를 사용하여 개발된 학생은 CLI 명령줄에 액세스하는 경우가 많습니다.항상 정해진 시간의 작업이나 스크립트를 명령행으로 직접 처리하는 것이 더욱 편리하고, 때로는 웹 페이지의 GET, POST처럼 이 명령행 스크립트에 파라미터를 제공해야 한다.예를 들어 특정한 날짜를 통계하는 스크립트는 날짜를 전달해야 한다. 그러면 우리는 지정한 날짜의 일부 데이터를 통계한다.이런 수요는 매우 흔할 것이다. 그렇다면, 우리는 어떻게 이 명령행의 매개 변수를 수신합니까?오늘은 이 방면의 내용을 소개하겠습니다.

$argv 모든 공백으로 구분된 매개 변수 목록 얻기


이 변수는 모두가 비교적 많이 사용하는 접참 변수로 추정된다.이것은 PHP가 우리를 위해 준비한 고정 변수입니다. 목적은 스크립트에 전달되는 매개 변수 그룹을 가져오는 것입니다.

print_r($argv);
// php  PHP .php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd 
// Array
// (
//     [0] =>  PHP .php
//     [1] => --a=1
//     [2] => -b=2
//     [3] => -c=3
//     [4] => -d=4
//     [5] => --e=5
//     [6] => ccc
//     [7] => ddd
// )
이 배열은 매개 변수 간격의 빈칸으로 구분된다.첫 번째 요소는 현재 실행 중인 스크립트 파일 이름입니다. 즉, 파라미터가 있든 없든 이 변수는 $argv[0]가 현재 스크립트 파일 이름을 표시합니다.
일상적인 개발 수요에서 사실 이 변수를 사용하면 충분하다.그러나 이것은 분명히 우리의 오늘의 주제가 아니다. 여러분은 위의 코드에 우리가 많은 매개 변수가 -x=xx의 형식이라는 것을 알아차렸다. 이런 형식의 매개 변수는 Linux의 명령 옵션과 매우 비슷하지 않은지, 이것이 바로 우리가 오늘 중점적으로 소개하고자 하는 것이다. 명령행 참수 목록에서 옵션을 얻는 것이다.

getopt() 명령행 매개 변수 목록에서 옵션 가져오기


사실 이런 간단한 함수입니다. 우리는 Linux의 명령 옵션처럼 지정한 명령 값을 얻을 수 있습니다.또한 $argv와 같이 빈칸으로 구분하는 것이 아니라, 명령 옵션 함수는 이 명령 옵션을 수조로 봉하여 옵션 이름을 키로 하고, 등호 뒤의 내용을 값으로 하는 수조로 구성하여 우리가 사용하기에 더욱 편리하다.

// php  PHP .php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd 
print_r(getopt('a:b:c:d:e:f:'));
// Array
// (
//     [b] => 2
//     [c] => 3
//     [d] => 4
// )
신기하고 직관적이지 않습니까? 우리는 b, c, d의 내용을 직접 얻었고 형식이 매우 뚜렷한 키 값 그룹 형식입니다.물어볼 학생이 있는데, a와 e는요?그리고 뒤에 ccc, ddd는요?
먼저 설명하고자 하는 것은 ccc와 ddd는 표준적인 옵션 매개 변수가 아니다. 즉, 이 함수가 수신하는 내용은 -로 시작하는 옵션이기 때문에 ccc와 ddd는 여기서 출력되지 않을 것이다. 그리고 주의해야 할 것은 비옵션 매개 변수는 옵션 매개 변수의 획득을 중단할 것이다. cc 이후에 -로 시작하는 옵션을 계속 추가하면 얻을 수 없다. 이것은 우리가 뒤에서 볼 수 있다.그리고 - 처음에 옵션 파라미터는요?우리는 아래의 긴 옵션 기능을 직접 보았다.

긴 옵션


// php  PHP .php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd 
print_r(getopt('', ['a:','b:','c:','d:','e:','f:']));
// Array
// (
//     [a] => 1
//     [e] => 5
// )
맞아요. getopt () 함수의 두 번째 매개 변수는 바로 이런 - 시작하는 긴 옵션을 정의하는 것입니다. 그리고 주의해야 할 것은 첫 번째 매개 변수는 문자열 형식이고, 두 번째 긴 매개 변수는 그룹 형식입니다.그러면 우리가 그것들을 결합하면 당연히 모든 매개 변수 정보를 얻을 수 있다.

// php  PHP .php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd 
print_r(getopt('a:b:c:d:e:f:', ['a:','b:','c:','d:','e:','f:']));
// Array
// (
//     [a] => 1
//     [b] => 2
//     [c] => 3
//     [d] => 4
//     [e] => 5
// )
OK, 매개 변수 옵션 획득에 문제가 없겠지. 세심한 학생이 또 문제를 발견했을 거야. 이 getopt () 함수의 매개 변수에 정의된 옵션 이름 뒤에 왜 사칭을 붙여야 돼?이것은 우리의 사칭 규칙과 관련이 있으니 직접 아래를 보십시오.

콜론 규칙


getopt () 의 처음 두 매개변수는 옵션 가져오기 규칙을 지원합니다.
  • 별도의 문자(허용되지 않음)
  • 뒤에 콜론 문자(이 옵션은 값이 필요합니다)
  • 뒤에 두 개의 콜론 문자가 따릅니다(선택 사항).
  • 그냥 코드로 볼게요.
    
    //  
    // php  PHP .php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd 
    print_r(getopt('abcdef'));
    // Array
    // (
    //     [b] => 
    //     [c] => 
    //     [d] => 
    // )
    
    //  
    // php  PHP .php -f
    print_r(getopt('f::'));
    // Array
    // (
    //     [f] => 
    // )
    print_r(getopt('f:'));
    // Array
    // (
    // )
    
    //  
    // php  PHP .php -f 22
    print_r(getopt('f::'));
    // Array
    // (
    //     [f] => 
    // )
    print_r(getopt('f:'));
    // Array
    // (
    //     [f] => 22
    // )
    
    //  
    // php  PHP .php -f=22
    print_r(getopt('f::'));
    // Array
    // (
    //     [f] => 22
    // )
    print_r(getopt('f:'));
    // Array
    // (
    //     [f] => 22
    // )
    
    이 단락은 비교적 길니, 우리 함께 보자.우선 짝퉁이 없는 abcdef 쓰기 방법은 되돌아오는 그룹에 키를 포함하지만 값이 없습니다. 위의 규칙은 이 매개 변수 옵션의 값을 받아들이지 않는 것입니다. 이 매개 변수 옵션도 키 이름만 있고 내용은 비어 있습니다.
    두 번째 단락은 매개 변수를 정의했지만 값을 주지 않았습니다. 이때 쌍사칭::키 이름이 있을 것이고 단사칭:는 아무것도 없습니다.
    세 번째 단락은 공백 형식의 옵션 값입니다. 이중 콜론::키 이름은 있지만 값이 없습니다. 단일 콜론:키 값은 정상입니다.
    네 번째 단락은 등호 = 형식의 옵션 값으로 짝퉁 번호가 키 값을 정상적으로 수신합니다.

    옵션 매개 변수 인터럽트


    위에서 언급한 매개 변수 중단 문제는 옵션 매개 변수 다음에 비옵션 매개 변수의 매개 변수가 나타나면 getopt () 는 이 비옵션 매개 변수 뒤에 있는 모든 내용을 얻을 수 없다는 것입니다.
    
    // php  PHP .php -f=22 aa -b=33
    //  , 。
    // Array
    // (
    //     [f] => 22
    // )
    
    이 테스트를 통해 뒤에 있는 b 옵션을 얻을 수 없음을 뚜렷하게 알 수 있습니다.이때 옵션 파라미터가 어디에 있는지 알고 싶거나 어떤 파라미터 때문에 중단되면 getopt () 함수의 세 번째 파라미터를 사용할 수 있습니다.
    
    // php  PHP .php -f=22 aa -b=33
    $optind = null;
    getopt('f:b:', [], $optind);
    echo $optind, PHP_EOL; //  ,2
    echo $argv[$optind], PHP_EOL; //   $argv  ,aa
    
    주석이 명확하게 썼습니다. 세 번째 인자는 인자 옵션이 중단된 위치의 인덱스를 되돌려줍니다. 이 인덱스는 $argv의 인덱스 순서 위치와 일치합니다.

    총결산


    솔직히 문서를 보기 전에 $argv 변수가 명령행 스크립트의 매개 변수를 얻을 수 있다는 것만 알았습니다. 이번 학습을 통해 이렇게 강력한 옵션 매개 변수 함수가 있다는 것을 알게 되었습니다.학습 과정은 매우 간단하다. 어떻게 실제 프로젝트에 활용하는가가 관건이다. 열심히 공부하고 열심히 실천해라!
    테스트 코드:
    github.com/zhangyue050…
    이상은 PHP가 명령행 파라미터를 어떻게 얻는지에 대한 상세한 내용입니다. PHP가 명령행 파라미터를 얻는 것에 대한 더 많은 자료는 저희 다른 관련 글을 주목해 주십시오!

    좋은 웹페이지 즐겨찾기