# PHP 8.4 릴리즈

> Clean Markdown view of GeekNews topic #17888. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=17888](https://news.hada.io/topic?id=17888)
- GeekNews Markdown: [https://news.hada.io/topic/17888.md](https://news.hada.io/topic/17888.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-11-22T09:45:31+09:00
- Updated: 2024-11-22T09:45:31+09:00
- Original source: [php.net](https://www.php.net/releases/8.4/en.php)
- Points: 5
- Comments: 3

## Summary

PHP 8.4는 속성 훅, 비대칭 가시성, 업데이트된 DOM API, 성능 향상 및 버그 수정을 포함한 여러 개선 사항을 제공합니다. 새로운 기능으로는 `#[\Deprecated]` 속성을 통한 사용 중단 메커니즘 적용, 다양한 새로운 배열 함수, 그리고 객체 지향적 숫자 처리 기능 등이 추가되었습니다. 또한, IMAP, OCI8 등의 확장 기능이 번들에서 제거되고 PECL로 이동되었으며, 성능 및 문법 개선을 통해 PHP 8.4로의 업그레이드를 권장합니다.

## Topic Body

- 속성 훅, 비대칭 가시성, 업데이트된 DOM API, 성능 향상, 버그 수정 및 일반적인 정리가 포함  
  - IDE와 정적 분석 도구가 네이티브로 이해할 수 있는 계산 속성을 지원하는 속성 훅 제공  
  - 속성의 읽기와 쓰기 범위를 독립적으로 제어할 수 있는 비대칭 가시성 도입.  
- **새로운 기능**  
  - `#[\Deprecated]` 속성을 통해 사용자 정의 함수, 메서드 및 클래스 상수에 PHP의 기존 사용 중단 메커니즘을 적용 가능.  
  - 새로운 DOM API는 HTML5 문서 파싱을 위한 표준 준수 지원을 포함하며, DOM 기능의 여러 오래된 호환성 버그를 수정함.  
  - `BcMath\Number` 객체를 사용하여 임의의 정밀도 숫자를 객체 지향적으로 처리 가능.  
  - `array_find()`, `array_find_key()`, `array_any()`, `array_all()` 등의 새로운 배열 함수 제공.  
  - PDO의 새로운 하위 클래스 Pdo\Dblib, Pdo\Firebird, Pdo\MySql, Pdo\Odbc, Pdo\Pgsql, Pdo\Sqlite 제공.  
  - 새로 인스턴스화된 객체의 속성과 메서드를 괄호 없이 접근 가능.  
- **새로운 클래스, 인터페이스 및 함수**  
  - 새로운 Lazy Objects, IR Framework 기반의 JIT 구현.  
  - `request_parse_body()` 함수, `bcceil()`, `bcdivmod()`, `bcfloor()`, `bcround()` 함수 추가.  
  - `DateTime::createFromTimestamp()`, `DateTime::getMicrosecond()`, `DateTime::setMicrosecond()` 등의 메서드 추가.  
  - `mb_trim()`, `mb_ltrim()`, `mb_rtrim()`, `mb_ucfirst()`, `mb_lcfirst()` 함수 추가.  
  - `pcntl_getcpu()`, `pcntl_getcpuaffinity()`, `pcntl_getqos_class()`, `pcntl_setns()`, `pcntl_waitid()` 함수 추가.  
  - `ReflectionClassConstant::isDeprecated()`, `ReflectionGenerator::isClosed()`, `ReflectionProperty::isDynamic()` 메서드 추가.  
  - `http_get_last_response_headers()`, `http_clear_last_response_headers()`, `fpow()` 함수 추가.  
  - `XMLReader::fromStream()`, `XMLReader::fromUri()`, `XMLReader::fromString()`, `XMLWriter::toStream()`, `XMLWriter::toUri()`, `XMLWriter::toMemory()` 메서드 추가.  
  - `grapheme_str_split()` 함수 추가.  
- **사용 중단 및 호환성 깨짐**  
  - IMAP, OCI8, PDO_OCI, pspell 확장 기능이 번들에서 제거되어 PECL로 이동됨.  
  - 암시적으로 nullable한 매개변수 유형이 사용 중단됨.  
  - 클래스 이름으로 _ 사용이 사용 중단됨.  
  - 0을 음수의 거듭제곱으로 올리는 것이 사용 중단됨.  
  - 잘못된 모드를 round()에 전달하면 ValueError 발생.  
  - 확장 기능의 클래스 상수가 이제 타입이 지정됨.  
  - GMP 클래스가 이제 final로 지정됨.  
  - MYSQLI 관련 상수와 함수가 사용 중단됨.  
  - `stream_bucket_make_writeable()`와 `stream_bucket_new()`가 이제 StreamBucket 인스턴스를 반환함.  
  - `exit()`의 동작 변경.  
  - E_STRICT 상수가 사용 중단됨.  
- **성능 및 문법 개선**  
  - 성능 향상, 문법 개선, 타입 안전성 향상.  
  - PHP 8.4로 업그레이드 권장.

## Comments



### Comment 31605

- Author: carnoxen
- Created: 2024-11-23T00:24:32+09:00
- Points: 1

워드프레스, 라라벨 덕분에 최소한 굶어죽지는 않을 언어

### Comment 31623

- Author: budaestew
- Created: 2024-11-23T10:17:18+09:00
- Points: 1
- Parent comment: 31605
- Depth: 1

워드프레스, 라라벨 망해도 굶어죽지 않을 언어입니다.

### Comment 31581

- Author: neo
- Created: 2024-11-22T09:45:31+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=42202670) 
- `$this->countryCode`가 무한 재귀를 일으키지 않는 이유는 RFC에 명시되어 있음. PHP의 속성 접근이 맥락에 따라 다른 의미를 가질 수 있다는 점이 마법처럼 느껴짐.
  - 속성 접근이 메서드 호출로 변환되는 언어의 마법이 있음.
  - PHP 사용자는 아니지만, 이러한 복잡성이 언어에 추가되는 것이 우려됨.

- PHP 프로그래머로서 PHP의 방향성에 대해 걱정됨. 새로운 언어 기능들이 의심스러운 이득을 위해 언어 복잡성을 높임.
  - 속성 후크는 속성 접근이 메서드 호출로 변환됨을 의미함.
  - JS와 Perl에서 이와 유사한 기능을 사용했지만, 명시적인 메서드가 더 명확하고 확장하기 쉬움.

- PHP가 여전히 번창하고 있음에 기쁨을 느낌. 2021년에는 Nikita Popov의 이탈로 걱정했지만, PHP는 여전히 좋은 언어로 많은 개발자들이 활동 중임.

- 속성 후크에 가장 기대됨. C#에서 그리웠던 기능임.
  - `__get()`과 `__set()`을 사용해 흉내내기도 했지만, 이는 무겁고 많은 PHPDoc 주석이 필요했음.

- 배열 접근자 오버로딩을 보다가 "Property Hooks"를 발견함. 최근에 추가된 기능임을 알고 놀람.
  - 다른 언어의 표현력과 문법적 설탕이 PHP에 도입된 것을 기쁘게 생각함.

- PHP의 새로운 릴리스에 만족함. 클로저에 대한 더 나은 스택 추적, 성능 개선, HTML5 지원, 레이지 객체 등 많은 개선이 이루어짐.

- bcmath 객체에 대해 기대됨. 산술 연산자보다는 래퍼 클래스 없이 데이터 타입 검사를 할 수 있게 된 점이 좋음.

- PHP가 여전히 발전하고 있음에 기쁨. 프리랜서로 시작했을 때의 기억이 떠오름.

- PHP의 새로운 `array_find` 함수는 언어 설계의 문제를 보여줌. 기존의 `array_search`와 유사하지만 인수 순서가 다름.
  - 다른 언어들이 이러한 함수를 가지고 있다는 이유로 PHP에도 추가되었지만, 대부분의 언어는 이를 전역 함수로 만들지 않음.

- "public private(set)"이 이해되지 않음. "readonly public"이 더 적절해 보임.
  - Swift의 `private(set)`과 유사해 보임.
