PHP8.2 버전업에 따른 변경점

PHP가 7.0에서 8.2로 업그레이드되었습니다. 개발 언어 자체의 세세한 변경점은 PHP 공식 매뉴얼을 참고해주세요. 여기서는 고도몰에서 달라진 특징만 쉽게 설명드리겠습니다.

1. 엄격한 타입 관리

예전 PHP(7.0)에서는 숫자가 아닌 값을 숫자처럼 계산하면 “경고(Warning)”만 나왔습니다. 예를 들어, 아래와 같은 코드가 있었습니다:

count('2'); // 문자열 "2"를 count()에 넣음
  • PHP 7.0 → 경고만 발생하고 실행은 계속됨

  • PHP 8.2 → 경고가 아니라 에러가 발생하여 실행이 멈춤

즉, PHP가 더 엄격하게 데이터를 구분하게 된 것입니다.


고도몰에서는 7버전의 느슨한 타입 체크 (특히 널, 배열) 에서 8버전에 엄격한 타입 체크로 변경 시, 기존 소스에 위반되는 문법들이 대부분 허용해 왔으므로 사이드이펙트 우려, 이를 방지하고자 gd_count()라는 자체 함수가 임시 적용되어 있습니다.

// PHP 8.2 호환을 위해 변경됨
gd_count('2'); // 안전하게 동작

2. 암호화 모듈

Mcrypt 모듈이 더이상 지원되지 않습니다.

DEPRECATED as of PHP 7.1.0 and REMOVED as of PHP 7.2.0

모든 Mcrypt 암호화는 openSSL 등 다른 암호화 알고리즘을 사용하도록 변경되었습니다.

3. 0으로 나누기 방지 (안전 나누기)

PHP 8.2에서는 나누기 연산에서 분모(나누는 값)가 0이면 즉시 에러가 발생합니다. 쇼핑몰 지표(전환율, 평균값 등)를 계산할 때 분모가 0이 될 수 있어, 화면이 멈추거나 오류가 노출될 위험이 있습니다.

이 문제를 막기 위해 고도몰은 다음 헬퍼를 제공합니다:

use Framework\Utility\NumberUtils;
 /*
     * 나누기 연산 시 피제수에 0을 주입할 경우 발생하는 division by zero 오류 방어
     * @param mixed $dividend 피제수
     * @param mixed $divisor 제수
     * @param null|string $returnZeroType 0으로 강제 리턴될 경우 지정한 타입으로 강제 형변환
     * @return float|int $quotient 몫
 */
NumberUtils::divisionExceptZero($numerator, $denominator, $fallback = 0, $scale = null);

Last updated

Was this helpful?