IT
PHP 8.4 주요 업데이트 내용 (2024년 11월 기준)
PHP 8.4 주요 업데이트 내용 (2024년 11월 기준)
1. Property Hooks
-
PHP 8.4에서는 객체 속성 접근 시 동작을 커스터마이징할 수 있는 속성 접근 후크 기능이 도입되었습니다.
-
이는 기존의 __get, __set 매직 메서드보다 더 정제된 방법으로 속성 접근에 개입할 수 있게 해 줍니다.
예시:
class Product {
public int $price = 100;
public function get_price(): int {
return $this->price;
}
public function set_price(int $value): void {
if ($value < 0) throw new Exception("Price cannot be negative");
$this->price = $value;
}
}
2. 비대칭 가시성 (Asymmetric Visibility)
-
클래스 속성에 대해 읽기와 쓰기 권한을 분리하여 정의할 수 있게 되었습니다.
-
예를 들어, 외부에서는 읽기만 허용하고 쓰기는 내부에서만 가능하도록 설정할 수 있습니다.
예시:
class User {
public function __construct(
public readonly string $name,
protected int $age
) {}
}
3. 새 배열 관련 함수 추가
-
배열 관련 유틸리티 함수들이 새롭게 추가되어 코드 간결성과 성능이 향상되었습니다.
추가된 주요 함수:
-
array_find(): 조건을 만족하는 첫 번째 요소 반환
-
array_find_key(): 조건을 만족하는 첫 번째 키 반환
-
array_any(): 조건을 만족하는 요소가 있는지 확인
-
array_all(): 모든 요소가 조건을 만족하는지 확인
예시:
$found = array_find([1, 2, 3, 4], fn($x) => $x > 2); // 3
4. 생성자 호출 문법 개선
-
파라미터 없는 클래스의 경우, () 없이 인스턴스를 바로 생성할 수 있게 되었습니다.
예시:
$obj = new MyClass; // 괄호 생략 가능
$obj->doSomething();
5. DOM 및 HTML5 파서 개선
-
DOM 확장이 업데이트되어 HTML5 문서의 파싱과 조작이 더욱 정확하고 안정적으로 개선되었습니다.
6. 성능 개선
-
Just-In-Time(JIT) 컴파일러가 내부적으로 최적화되어 PHP 8.3보다 약간의 성능 향상이 보고되었습니다.
-
메모리 효율성과 다중 요청 처리 시 효율성이 개선되었습니다.
7. 보안 설정 강화
-
기본 bcrypt 암호화의 비용(cost factor)이 상향 조정되어 기본 보안 수준이 높아졌습니다.
-
PHP 내장 서버에서 TLS 처리 방식의 보안성도 향상되었습니다.
PHP 8.3 요약 (2023년 11월 23일 릴리스)
주요 변경 사항:
클래스 상수의 타입 선언
class Example {
public const int MAX_COUNT = 10;
}
readonly
속성에 대한 깊은 복제 지원
#[\Override]
속성 도입
-
부모 클래스의 메서드를 오버라이드할 때, 명시적으로 표시 가능
유용한 신규 함수 추가
-
json_validate(): JSON 문자열이 유효한지 확인
-
mb_str_pad(): 멀티바이트 문자열에 대한 str_pad() 기능 확장
성능 및 내부 함수 개선
-
랜덤 함수 확장 (Random\Engine)
-
gc_status() 정보 추가
-
unserialize()의 오류 처리 방식 개선
버전 업그레이드 시 유의사항
-
PHP 8.4는 이전 버전과 일부 비호환성이 발생할 수 있으므로, 코드베이스를 점검하고 테스트하는 것이 필수입니다.
-
사용 중인 프레임워크(Laravel, Symfony 등)와 라이브러리들이 PHP 8.4를 지원하는지 확인해야 합니다.
-
Composer를 통해 의존성 버전을 업데이트하고, CI 테스트를 통과시켜야 안전하게 운영 환경에 반영할 수 있습니다.
댓글
아직 댓글이 없습니다.
로그인 후 댓글을 남길 수 있습니다.