IMG-LOGO
공지사항 :

PHP 8.4 주요 업데이트 내용 (2024년 11월 기준)

lmkfox - 2025-06-01 07:31:38 32 Views 0 Comment

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 테스트를 통과시켜야 안전하게 운영 환경에 반영할 수 있습니다.


댓글