PHP에서 단언 함수 사용 상세 정보

4720 단어 PHP단언함수
원래 단언과 관련된 함수는 PHPUNit라는 단원 테스트 구성 요소가 제공한 것이라고 생각했는데, 수첩을 읽은 후에야 이 assert () 단언 함수는 PHP 자체가 가지고 있는 함수임을 발견하였다.즉, 우리가 코드에서 간단한 테스트를 진행할 때 전체 단원 테스트 구성 요소를 완전히 도입할 필요가 없다는 것이다.

assert () 단언 함수


assert(1==1);

assert(1==2);
// assert.exception = 0  ,Warning: assert(): assert(1 == 2)
// assert.exception = 1  ,Fatal error: Uncaught AssertionError:  
두 번째 코드는 단언 검증을 통과할 수 없다는 것이 분명하다.그러면 PHP에서 경고나 예외 오류가 반환됩니다.왜 두 가지 잘못된 형식일 수 있습니까?php를 설정하면ini의 assert.exception이off 또는 0일 때, 즉 이 매개 변수의 능력을 닫을 때, 프로그램은 PHP5 형식으로 위의 코드의 주석처럼 경고를 되돌려줍니다.동시에try를 통해...catch도 이상 포획을 할 수 없습니다.이 매개 변수는 사실 정통 이상 대상으로 던지는지 여부를 제어하는 것이다.이 매개 변수를 기본값인 on 또는 1로 설정하면 이상을 던져 프로그램이 중단됩니다.
상기 코드에서 알 수 있듯이 단언의 첫 번째 매개 변수는 하나의 표현식이고bool 형식의 대상을 되돌려주는 표현식이 필요하다.만약 우리가 문자열이나 숫자를 전달한다면?

//   assert.exception = 0  

assert(" ");
// Deprecated: assert(): Calling assert() with a string argument is deprecated
// Warning: assert(): Assertion " " failed

assert("1");
// Deprecated: assert(): Calling assert() with a string argument is deprecated

assert(0);
// Warning: assert(): assert(0) failed

assert(1);

assert("1==2");
// Deprecated: assert(): Calling assert() with a string argument is deprecated
// Warning: assert(): Assertion "1==2" failed 
첫 번째 매개 변수의 표현식은 형식의 강제 변환을 진행하지만, 문자열 형식은 유행이 지난 알림이 더 많습니다. 이것은 assert () 함수에 문자열 형식을 전달하는 표현식 형식이 유행이 지났음을 나타냅니다.현재 테스트 버전은 7.3입니다. 앞으로 실행 중단 오류나 이상을 직접 보고할 수 있습니다.주요 문제는 전달된 문자열 자체도 표현식이라면 이 표현식의 내용을 바탕으로 판단하기 쉬워 마지막 코드와 같은 잘못된 뜻이 생기기 쉽다는 점이다.물론 이미 유행이 지난 사용 방식은 추천하지 않는다. 여기는 단지 하나의 이해만 하면 된다.
다음은 assert () 함수의 다른 매개 변수를 보겠습니다. 두 번째 매개 변수는 두 가지 형식입니다. 문자열에 잘못된 정보를 정의하거나, 이상 클래스에 이상을 던지는 데 사용됩니다.

assert(1==1, " ");

assert(1==2, " ");
// Warning: assert():   failed 
만약 문자열을 직접 준다면, 경고의 알림 메시지에 우리가 정의한 이 잘못된 정보의 내용이 표시됩니다.이것은 매우 이해하기 쉽다.

//   assert.exception  

assert(1==1,  new Exception(" "));

assert(1==2,  new Exception(" "));
// assert.exception = 1  ,Fatal error: Uncaught Exception:  
// assert.exception = 0  ,Warning: assert(): Exception:  
물론 우리도 이상류에게 단언에 이상을 던질 수 있다.기본적으로 이 이상한 던지기는 프로그램의 실행을 중단합니다.즉, 정상적인 이상 투매 절차입니다. 우리는try를 사용할 수 있습니다.catch에서 이상한 포획을 진행합니다.

try{
    assert(1==2,  new Exception(" "));
}catch(Exception $e){
    echo " !:", $e->getMessage(), PHP_EOL;
}
//  !: 
또 하나의 매개 변수는 단언의 전체 운행에 영향을 미칠 수 있는데 그것이 바로 php이다.ini의 zend.assertions 매개 변수.다음과 같은 세 가지 값을 포함합니다.
  • 1, 코드를 생성하고 실행하며 일반적으로 테스트 환경에서 사용됩니다
  • 0, 코드를 생성하지만 실행할 때 지나갑니다
  • -1, 코드를 생성하지 않고 일반적으로 공식 환경에서 사용
  • 이 매개 변수는 테스트, 기본 php를 스스로 설정할 수 있습니다.ini의 기본값은 1입니다. 즉, 정상적인 assert () 함수입니다.

    assert_options () 및 대응하는 php.ini의 매개 변수 설정


    PHP의 단언 기능은 우리에게 assert_를 제공했다단언 능력과 관련된 매개 변수 설정을 쉽게 설정하고 얻을 수 있는 옵션 () 함수입니다.다음과 같은 단언 플래그를 설정할 수 있습니다.
    플래그 | INI 설정 | 기본값 | 설명
  • | :-: | :-: | -:
  • ASSERT_ACTIVE | assert.active | 1 | assert() 단언 ASSERT_ 활성화WARNING | assert.warning | 1 | 실패한 단언마다 PHP 경고 생성(warning) ASSERT_BAIL | assert.bail | 0 | 단언 실패 시 ASSERT_ 실행 중지QUIET_EVAL | assert.quiet_eval | 0 | 단언 표현식 값을 구할 때 error_ 비활성화reporting ASSERT_CALLBACK | assert.callback | (NULL) | 단언 실패 시 콜백 함수 호출
    이 매개 변수들의 의미는 모두 매우 이해하기 쉬우니 모두가 스스로 시험해 볼 수 있다.마지막 ASSERT 한번 가볼게요.CALLBACK의 역할.사실 그것의 설명도 매우 명확하다. 단언이 실패한 상황에서 이 옵션이 정의한 리셋 함수에 들어가는 것이다.
    
    assert_options(ASSERT_ACTIVE, 1);
    assert_options(ASSERT_WARNING, 1);
    assert_options(ASSERT_BAIL, 1);
    
    assert_options(ASSERT_CALLBACK, function($params){
        echo "====faild====", PHP_EOL;
        var_dump($params);
        echo "====faild====", PHP_EOL;
    });
    
    assert(1!=1);
    // ====faild====
    // string(105) ".../source/ PHP .php"
    // ====faild====
    
    단언이 실패했을 때, 우리는 리셋 함수에 들어갔고, 리셋 함수에서 리셋 함수에 전달되는 매개 변수의 내용을 직접 간단하게 인쇄했다.이 리셋 함수에서 전달된 것은 단언할 수 없는 파일 정보임을 알 수 있다.

    총결산


    단언 함수의 사용과 설정을 익히는 것을 배우면 우리가 앞으로 PHPUNit 단원 테스트를 배우는 데 기반을 다질 수 있다. 물론 그 자체의 이 능력은 많지 않다. 여러분이 기억하면 된다!
    테스트 코드:
    github.com/zhangyue050…
    다음은 PHP에서 단언 함수의 사용에 대한 상세한 내용입니다. PHP에서 단언 함수의 사용에 대한 더 많은 자료는 저희 다른 관련 글을 주목해 주십시오!

    좋은 웹페이지 즐겨찾기