개요
AssertionError 클래스는 Error 클래스의 하위 클래스입니다. 이 오류는 assert() 함수가 FALSE를 반환할 때 발생하며, 코드 내에서 검증 조건이 충족되지 않았음을 의미합니다.
assert()는 주어진 어설션(assertion)이 참인지 거짓인지 검사하고, 거짓일 경우 AssertionError를 던집니다. assert() 함수는 다음과 같이 정의됩니다.
문법(Syntax)
PHP 5 및 PHP 7 assert ( mixed $assertion [, string $description ] ) : bool PHP 7 전용 assert ( mixed $assertion [, Throwable $exception ] ) : bool
매개변수(Parameters)
| 번호 | 매개변수 및 설명 |
|---|---|
| 1 | assertion 검사할 문자열 또는 불리언 표현식입니다. |
| 2 | description 어설션이 실패했을 때 표시되는 실패 메시지입니다. |
| 3 | exception (PHP 7 전용) 던질 수 있는(throwable) 예외 객체입니다. |
PHP 7부터의 주요 변경 사항
PHP 7.0부터 assert()는 더 이상 일반 함수가 아니라 언어 구조(language construct)로 취급됩니다. 이에 따라 다음과 같은 변화가 있습니다.
- assertion 매개변수에 표현식을 직접 사용할 수 있습니다.
- 두 번째 매개변수로 예외 객체 또는 설명 문자열을 지정할 수 있습니다.
- PHP 7.2부터는 문자열 형태의 description을 사용하면 E_DEPRECATED 경고 메시지가 발생합니다.
또한, assert()가 던진 AssertionError는 php.ini 설정 파일에서 assert.exception=on으로 활성화된 경우에만 catch 블록으로 전달됩니다. 이 설정이 꺼져 있으면 예외가 잡히지 않으므로 주의해야 합니다.
AssertionError 예제
다음 예제에서는 조건이 참이라고 어설션을 선언합니다. 조건이 참이면 try 블록이 정상적으로 실행되고, 거짓이면 catch 블록에서 AssertionError 메시지가 출력됩니다.
예제 코드
<?php
$a = 10;
$b = 20;
try {
if (assert($a == $b, "assert($a == $b) failed.")) {
echo("assert($a == $b) was successful.");
}
} catch (AssertionError $e) {
echo $e->getMessage();
}
?>실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
assert(10 == 20) failed.
$a와 $b의 값이 서로 다르기 때문에 어설션이 실패하고, catch 블록에서 지정한 실패 메시지가 화면에 표시됩니다. 이처럼 assert()는 개발 단계에서 코드의 논리적 가정을 빠르게 검증하는 데 유용하게 활용할 수 있습니다.