PHP 8.4 릴리즈
(php.net)- 속성 훅, 비대칭 가시성, 업데이트된 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로 업그레이드 권장.
 
 
Hacker News 의견
- 
$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)과 유사해 보임. 
 - Swift의