티스토리 뷰

향상된 증가 및 감소 연산자 동작

++와 -- 연산자의 동작 개선

불필요한 문자열 증가가 제거되고, 불리언 및 null 값도 숫자로 간주

// PHP 8 및 이전
$foo = 'a9';
$foo++;
echo $foo;  // 결과: 'b0'

// PHP 9
$foo = 'a9';
$foo++;  // TypeError 발생

빈 문자열이 숫자로 변환되는 것 금지

// PHP 8 및 이전
$baz = '';
$baz--;  // 결과: int(-1)

// PHP 9
$baz = '';
$baz--;  // TypeError 발생

역직렬화 오류 발생 시 예외 처리

역직렬화 실패시 E_WARNING에서 UnserializationFailedException으로 상향

// PHP 8.3
unserialize("foo");  // 경고 발생

// PHP 9.0
unserialize("foo");  // Uncaught UnserializationFailedException 발생

단순화된 함수 시그니처

함수의 시그니처가 단순화되어 사용하기 더 쉬워짐.
예를 들어, array_keys()의 동작 변경

// 현재 PHP:
$allKeys = array_keys($myArray);
$specificKeys = array_keys($myArray, 'searchValue', true);

// PHP 9:
$allKeys = array_keys($myArray);
$specificKeys = array_keys_filter($myArray, 'searchValue', true);

잘못된 값에 대한 배열 생성 금지

PHP 9.0에서는 false를 배열로 자동 변환하는 기능 제거

$arr = false;
$arr[] = 2;  // 오류 발생: Cannot use a scalar value as an array

간소화된 문자열 보간

PHP 9.0에서는 중괄호를 사용한 문자열 보간 방식 일부 제거

$foo = 'world';
echo "Hello ${foo}";  // 오류 발생

// 대신 사용할 수 있는 방법
echo "Hello $foo";     // 이 방법은 사용 가능
echo "Hello {$foo}";   // 이 방법은 사용 가능

경고를 오류로 변경

정의되지 않은 변수에 대한 경고를 오류로 상향

echo $foo;  // PHP 8.x에서는 경고, PHP 9.0에서는 fatal error

이전 PHP 버전의 비활성화된 기능 제거

PHP 8.1에서 비활성화된 기능들은 PHP 9.0에서 제거됨.
이전 버전의 경고를 무시했던 개발자들은 대비.

 

참고

댓글