PHP Annotated – October 2023

PHP Annotated 이미지

Roman Pronskiy가 쓰고 JetBrains에서 제공하는 PHP Annotated 2023년 10월호입니다.


PHP Annotated 10월호에 오신 것을 환영합니다! 엄선된 뉴스, 기사, 도구, 동영상을 통해 지난 한 달간 PHP 커뮤니티에서 가장 흥미로운 발전 사항을 요약해드립니다.

Highlights

PHP 8.3.0 RC5 has been released

https://www.php.net/archive/2023.php#2023-10-26-1

또 다른 릴리스 후보가 일정에 따라 제공되었습니다. 여섯 번째 RC는 11월 9일에 예정되어 있으며, PHP 8.3의 최종 릴리스 전 마지막 RC가 될 것입니다.

PHP 8.3에 추가되는 기능에 대한 자세한 목록은 php.watch 또는 stitcher.io를 참조하세요.

다음은 곧 출시될 버전에 대한 다른 리소스입니다:

The PHP 8.1.25 and PHP 8.2.12 bug-fix releases are now available

PHP 8.1.25PHP 8.2.12 버그 수정 릴리스를 지금 사용할 수 있습니다.

What was that final noise about after all?

PHP 커뮤니티를 뒤흔든 또 다른 소동은 stevebauman/unfinalize 패키지의 출시로 인해 발생했습니다. 이 패키지는 vendor 디렉토리에 있는 모든 라이브러리 클래스를 살펴보고 모든 클래스와 메서드에서 final 키워드를 제거합니다.

일부 개발자는 공급업체 패키지에서 클래스를 확장할 수 있기를 원하기 때문에 Unfinalize를 사용하는 것입니다. 하지만 패키지 관리자가 클래스를 최종 클래스로 표시하는 데는 그럴 만한 이유가 있습니다: 일부 클래스나 메서드를 내부에 유지하여 사용자 코드를 손상시키지 않고 수정할 수 있기를 원하기 때문입니다.

이 주제는 CS 업계에서 새로운 것이 아니며 취약한 기본 클래스 문제(fragile base class problem)로 알려져 있습니다.

예를 들어 Kotlin과 같은 일부 프로그래밍 언어에서는 클래스가 기본적으로 최종적입니다 😱. 다른 언어에서는 수정자가 단지 규칙일 뿐이지만 이를 준수하지 않으면 종속성을 업데이트하면 애플리케이션이 손상될 수 있습니다.

바로 이 부분에서 PHP 8.3의 #[Override] 속성이 도움이 될 것입니다! 어떤 이유로 클래스에서 final을 제거한 다음 확장해야 하는 경우 PHP 8.3에서는 자식 클래스의 메소드를 #[Override]로 표시할 수 있습니다. 이 경우 적어도 기본 클래스 메서드가 변경되면 알림을 받을 수 있습니다.

다음은 이 주제에 대한 커뮤니티의 다른 글입니다:

PHP Core

대부분의 핵심 소식은 PHP 재단의 PHP 코어 라운드업 시리즈에서 자세히 다루고 있으므로 여기서는 몇 가지만 간략하게 언급하겠습니다:

✅ RFC: Increasing the default bcrypt cost

RFC: 기본 bcrypt 비용 상승

기본 BCrypt 비용을 늘리자는 Tim Düsterhus의 제안이 받아들여졌습니다. PHP 8.4에서는 비용이 12로 증가합니다.

보안 팁: bcrypt 라운드 늘리기 by Stephen Rees-Carter.

역자주:
Laravel에서도 기본 bcrypt 라운드를 12(성능과 보안 사이에서 최적의 지점)로 늘리는 PR이 머지되어 있습니다.
이 PR에는 관련된 논의를 따라갈 수 있는 링크와 대화가 많은데, 이중에는 bcrypt의 대안으로 알려졌던 Argon2에 관한 내용도 있습니다.

요약하자면, 일부 PHC 심사위원조차도 UX 허용 범위 연구(사용자당 인증 지연 500ms~1초)에 맞춰 인증 속도를 달성하려면 Argon2 제품군과 scrypt를 모두 “하향” 조정해야 한다는 점을 인정합니다. 동등한 인증 속도의 bcrypt보다 오프라인 공격에 대한 저항력이 떨어 집니다 (!)

역설적이게도 다중 사용자 대화형 로그인 사용 사례와 “여러 해시의 오프라인 공격 저항” 사례의 경우 적절하게 조정된 bcrypt가 여전히 우수합니다.

즉… 가장 단순하고 가장 이전 버전과 호환되는 옵션(bcrypt 비용 증가)은 현재 가장 안전한 옵션이기도 합니다.

✅ RFC: A new JIT implementation based on IR Framework

RFC: IR 프레임워크에 기반한 새로운 JIT 구현

새로운 JIT 구현을 병합하자는 제안이 만장일치로 받아들여졌습니다. PHP 8.4에는 완전히 새로운 빌트인 JIT가 적용될 예정입니다.
새로운 JIT에 대한 기술적 세부 사항을 공개하는 프레젠테이션: (PDF) 차세대 PHP용 JIT의 기반이 되는 IR JIT 프레임워크가 발표되었습니다.

📣 RFC: Rounding integers as int

RFC: 정수를 int로 반올림하기

현재 round, ceiling, floor 함수는 부동 소수점을 반환하지만 2^53 이상의 정수를 사용할 경우 정밀도 손실로 인해 예상치 못한 결과가 발생합니다.
Marc Bennewitz는 정수에 대해 반올림을 수행하고 가능한 경우 결과 정수를 반환할 것을 제안합니다.

📣 RFC: RFC1867 for non-POST HTTP verbs

RFC: 비-POST HTTP 동사를 위한 RFC1867

Ilija Tovilo는 기존 기능을 사용자 영역에 노출하는 새로운 함수 request_parse_body()를 추가하여 PUTPATCH와 같은 다른 HTTP 동사에 사용할 수 있도록 제안합니다.

Tools

  • dunglas/frankenphp - 필요한 모든 것을 갖춘 최신 PHP 애플리케이션 서버로 자동 HTTPS, HTTP/3, 103 Early Hints, Zstandard, PHP용 워커 모드 등을 제공합니다. Caddy를 기반으로 구축되었으며 가장 간단한 구성 프로세스를 제공합니다.

  • utopia-php/framework – 배우기 쉬운 빠르고 가벼운 마이크로 PHP 프레임워크입니다. Appwrite team에서 유지 관리합니다.

  • saloonphp/saloon 3.0.0 - 멋진 API 통합 및 SDK를 구축하기 위한 패키지입니다.

  • phpro/soap-client 3.0.0 - SOAP를 처리해야 하는 경우 유지 관리되지 않는 PHP 확장 프로그램을 사용하지 마세요. 대신 이 범용 PHP용 SOAP 클라이언트를 사용해 보세요. 새로운 옵션이 될 수도 있습니다.

  • flow-php/flow - Flow PHP는 강력하게 유형화된 데이터 처리 프레임워크입니다.
    Flow PHP 사용 예시

  • benholmen/defrag - 이 패키지는 90년대 조각 모음 도구 스타일의 출력을 PHPUnit 테스트 스위트로 생성합니다.
    defrag 실행 화면

  • flavioheleno/watchr - 도메인 이름과 TLS 인증서의 만료일을 확인하는 명령줄 유틸리티 및 GitHub Action입니다.

  • ad-aures/castopod - CodeIgniter로 구축된 오픈 소스 호스팅 플랫폼으로, 청중의 참여를 유도하고 소통하고자 하는 팟캐스터를 위해 만들어졌습니다.

PhpStorm

Symfony

Laravel

기타

strlen('👨‍👩‍👧‍👦'); 반환값 25.
mb_strlen('👨‍👩‍👧‍👦'); 반환값 7.
grapheme_strlen('👨‍👩‍👧‍👦');은 1을 반환합니다.

이 포스트에서 그 이유를 설명합니다.

Fun

Conferences

발표를 위해 방문하고 신청할 만한 다음 PHP 행사를 확인해 보세요:

  • Laracon AU – Sydney, Australia, November 16–17, 2023.
  • PHPCon Poland – Zawiercie, Poland, November 17–18, 2023.
  • SymfonyCon – Brussels, Belgium, December 7–8, 2023.
  • Laracon EU – Amsterdam, The Netherlands, Feb 5–6, 2024. CFP
  • PHP UK – London, UK, February 15–16, 2024. CFP
  • Laracon India – Udaipur, India, March 23–24, 2024. CFP 🆕
  • PHP[TEK] 2024 – Chicago, IL, USA, April 23–25, 2024. CFP 🆕
  • phpday 2024 – Verona, Italy, May 16–17, 2024. CFP 🆕

가까운 곳에서 다음 PHP 밋업이 언제 열리는지 궁금하다면 Tomas Votruba가 운영하는 멋진 밋업 애그리게이터 friendsofphp.org에서 확인할 수 있습니다. php.net - 이벤트에도 캘린더가 있습니다: 2023년 11월.