- PHP 8.5는 파이프 연산자, clone with, 새 URI 파서 등 여러 기능을 포함한 주요 업데이트 버전
-
파이프 연산자는 함수 호출 체인을 단순화해 가독성과 유지보수성을 높임
-
Clone with 기능은 객체 복제 시 속성 값을 동시에 변경할 수 있게 하며, 일부 readonly 속성에는 제한 존재
-
#[NoDiscard] , (void) 캐스트, 클로저 상수 표현식 지원, fatal error 백트레이스 출력 등 개발자 편의 기능 강화
-
배열 처리, 속성 검증, 비표준 캐스트 폐기 등 세부 개선과 하위 호환성 관련 변경이 포함된 버전
주요 신규 기능
-
파이프 연산자 (|>) 도입으로 함수의 결과를 다음 함수로 직접 전달하는 체인형 코드 작성 가능
- 중첩 함수 호출 대신 단계별로 데이터를 변환하는 구조 지원
- 예시 코드에서는 trim, str_replace, strtolower 등을 순차적으로 연결
-
Clone with 기능을 통해 객체 복제 시 속성 값을 동시에 변경 가능
- 예시 클래스 Book에서 clone($this, ['title' => $title]) 형태로 사용
- 단, 외부에서 readonly 속성을 복제할 때는 public(set) 접근 지정 필요
-
#[NoDiscard] 속성과 (void) 캐스트 추가
- 반환값을 무시하면 경고를 발생시키는 함수 표시 가능
-
(void) 캐스트를 사용하면 경고 억제 가능
-
클로저 개선으로 상수 표현식 내에서 클로저 및 일급 호출 가능 객체 사용 가능
- 예시에서는 #[SkipDiscovery(static function (...))] 형태로 속성 내 정의
- 이러한 클로저는 반드시 static으로 선언해야 하며 외부 변수 접근 불가
-
Fatal error 백트레이스 출력 기능 추가
- 이전에는 표시되지 않던 스택 추적 정보가 오류 메시지에 포함되어 디버깅 용이
배열 및 URI 관련 기능
속성 및 검증 관련 기능
-
#[DelayedTargetValidation] 속성 도입
-
#[Override] 등 일부 속성의 검증 시점을 컴파일 타임에서 런타임으로 지연 가능
- 하위 호환성 문제를 완화하기 위한 목적
기타 소규모 변경 사항
-
정적 속성의 비대칭 가시성(asymmetric visibility) 지원
-
클래스 외 상수에도 속성(attribute) 부여 가능
-
생성자 프로퍼티 승격(property promotion) 이 final 속성에도 적용 가능
-
#[\Override] 속성을 프로퍼티에도 적용 가능
-
Dom\Element::$outerHTML 속성 추가
-
Exif 확장이 HEIF/HEIC 이미지 지원
-
filter_var() 호출 시 FILTER_THROW_ON_FAILURE 플래그 추가
폐기 및 비호환 변경
-
비표준 캐스트 이름 (boolean), (integer) 등 사용 중단
-
백틱(```)을 shell_exec()의 별칭으로 사용하는 방식 폐기
-
상수 재선언 기능 폐기
-
disabled_classes ini 설정 제거
- 전체 변경 및 폐기 목록은 PHP 8.5 업그레이드 문서에서 확인 가능
전체 요약
- PHP 8.5는 코드 가독성, 디버깅, 속성 처리, 배열 조작 등 전반적인 개발 경험을 개선한 버전
-
파이프 연산자와 URI 파서는 실무 코드 단순화에 직접적인 영향을 미침
-
속성 검증 지연, 새 배열 함수, 백트레이스 출력 등은 유지보수성과 안정성을 높이는 변화
- 일부 비표준 문법 및 설정 폐기로 코드 정비 필요
- 전체적으로 언어 일관성 강화와 개발자 편의성 향상이 중심인 릴리스