PHP Annotated – November 2023
Roman Pronskiy가 쓰고 JetBrains에서 제공하는 PHP Annotated 2023년 12월호입니다.
PHP Annotated 11월호에 오신 것을 환영합니다! 11월호에서는 엄선된 뉴스, 기사, 도구, 동영상을 통해 지난 한 달 동안 PHP 커뮤니티에서 가장 흥미로웠던 개발 동향을 되돌아봅니다.
Highlights
🎉 PHP 8.3.0 released!
https://www.php.net/releases/8.3/
PHP 8.3은 PHP 언어의 주요 업데이트입니다. 여기에는 입력형 클래스 상수, 읽기 전용 프로퍼티의 딥 복제, 랜덤 기능 추가 등 새로운 기능이 포함되어 있습니다. 항상 그렇듯이 성능 개선, 버그 수정, 전반적인 정리도 포함되어 있습니다.
PHP 8.3의 새로운 기능에 대한 자세한 목록은 릴리스 페이지와 마이그레이션 가이드에서 확인할 수 있으며, PHP 재단의 공지사항에서 릴리스에 대해 자세히 알아볼 수 있습니다.
PHP 8.3 설치 또는 업그레이드
- Windows: 컴파일된 바이너리는 windows.php.net에서 찾을 수 있습니다. 또는 Chocolatey에서 제공되는 커뮤니티 빌드를 선택할 수 있습니다.
- Ubuntu/Debian: PHP 8.3은 ondrej/php PPA에서 사용할 수 있습니다.
- Fedora/RHEL/CentOS: Remi 저장소에서 소프트웨어 컬렉션(php83)으로 제공됩니다.
- macOS: PHP 8.3은 홈브류를 통해 shivammathur/homebrew-php 탭을 사용하여 설치할 수 있습니다.
- Docker: 이제 8.3 태그가 있는 PHP 8.3 이미지를 Docker Hub에서 사용할 수 있습니다.
Freek, Brent, Roman과 함께하는 PHP 8.3 축하 스트림을 시청하세요.
⚠️ PHP 8.0의 수명이 다했습니다.
PHP 8.0.30은 PHP 8.0의 마지막 릴리스입니다. 더 이상 공식 보안 업데이트가 제공되지 않습니다.
PHP 8.1.26 and PHP 8.2.13 have been released
https://www.php.net/ChangeLog-8.php#8.1.26
https://www.php.net/ChangeLog-8.php#8.2.13
🐛 버그 수정 릴리스입니다.
PHP 8.1 브랜치는 마지막 버그 수정 릴리스인 PHP 8.1.27이 한 번 더 릴리스될 예정이며, 그 이후에는 보안 버그 수정만 릴리스됩니다.
🎂 PHP 재단 창립 2주년
PHP 재단은 2년 전에 설립되었습니다.
지난 한 해 동안 PHP 재단은 6명의 핵심 개발자의 작업을 지원했으며, PHP 언어에 상당한 기여를 했습니다.
PHP 재단의 2023년 11월 업데이트를 확인하세요.
OpenCollective 또는 GitHub Sponsors를 통해 PHP 재단을 지원하는 것도 고려해 보세요.
PHP Core
대부분의 핵심 소식은 PHP 재단에서 제공하는 PHP 코어 라운드업 시리즈에서 자세히 다루고 있으므로 몇 가지만 간략하게 언급하겠습니다:
📣 RFC: Resource to object conversion
resource
는 오래전부터 객체로 대체된 PHP의 구식 데이터 구조입니다. resource를 object로 대체하는 작업은 2013년에 시작되었지만, 대부분의 확장 기능은 PHP 8.0이 출시되면서 마이그레이션되었습니다.
Máté Kocsis는 나머지 확장 기능을 마이그레이션하고 향후 개발을 위한 정책을 정의할 것을 제안합니다.
📣 RFC: Release cycle update
현재 PHP 버전의 수명은 3년입니다. 많은 사람이 이 기간이 너무 짧고 6개월인 사전 릴리스 단계가 지나치게 길다고 생각합니다.
PHP 8.3 릴리스 관리자인 Jakub Zelenka는 PHP 버전 수명을 4년(유지보수 2년, 보안 업데이트 2년)으로 늘리고 사전 릴리스 단계를 수정할 것을 제안합니다.
📣 RFC: Improve callbacks in ext/dom and ext/xsl
Niels Dossche는 callable
을 사용할 수 있는 XSLTProcessor::registerPHPFunctions()
및 DOMXPath::registerPhpFunctions()
메서드를 허용할 것을 제안했습니다.
📣 RFC: Change how JIT is disabled by default
현재 JIT는 tracing
모드에서 실행 중이지만 opcache.jit_buffer_size
가 0
으로 설정되면 기본적으로 비활성화됩니다. RFC에서는 opcache.jit=disable
을 설정함으로써 기본적으로 JIT를 비활성화하고, 기본 jit_buffer_size
값을 64m로 늘릴 것을 제안합니다.
📣 RFC: Final anonymous classes
RFC에서는 익명 클래스 사용 환경을 개선하기 위한 세 가지 옵션 중 하나를 제안합니다:
- 최종 익명 클래스에 대한 지원 추가(
new final class {}
구문, 호환성 유지). - 또는 모든 익명 클래스를 최종 클래스로 만드는 옵션 없이 기본적으로 모든 익명 클래스를 최종 클래스로 만듭니다(호환성 깨짐).
- 또는 모든 익명 클래스를 기본적으로 최종 클래스로 만들고, 선택적
open
키워드를 제공하여 최종 클래스가 아닌 것으로 만듭니다(Kotlin에서와 같이, new open class {}, 호환성 깨짐).
📣 RFC: Property Hooks
RFC: 프로퍼티 훅
이 RFC에서 Ilija Tovillo와 Larry Garfield는 get/set 함수를 사용하여 가상 프로퍼티를 선언할 것을 제안합니다.
설계 및 구문은 Kotlin과 가장 유사하지만 C# 및 Swift의 영향도 받습니다.
class User implements Named |
이 RFC의 흥미로운 부작용은 인터페이스에서 추상 속성을 선언할 수 있다는 점입니다:
abstract class A |
Sjon Hortensius 덕분에 이미 3v4l.org에서 프로퍼티 훅을 사용해 볼 수 있습니다.
그리고 RFC Vote에 피드백을 제공할 수도 있습니다: Property Hooks
Tools
php-tui/php-tui – 의사(pseudo) 그래픽 UI를 갖춘 PHP로 콘솔 애플리케이션을 만들기 위한 프레임워크.
Crell/Serde – PHP 8을 위한 강력한 직렬화/역직렬화 라이브러리.
pestphp/pest-plugin-stressless – grafana/k6 위에 구축된 Pest용 스트레스 부하 테스트 플러그인. 소개 비디오 📺 Stressless: PHP를 위한 스트레스 테스트를 참조하세요.
buggregator/server – XHprof 프로파일러, Symfony VarDumper 서버, SMTP 서버, Sentry 호환 서버, Monolog 서버, HTTP 요청 덤프 서버 등 PHP 애플리케이션을 위한 다양한 디버깅 기능을 제공하는 경량의 독립형 서버입니다.
보다 편리한 PHP 디버깅을 위한 콘솔 미니 서버 및 도우미인 buggregator/trap이 함께 제공됩니다.NoiseByNorthwest/php-spx – 웹 UI가 내장된 간단하고 직관적인 PHP 프로파일링 확장 프로그램입니다.
reliforp/reli-prof – PHP로 작성된 PHP용 샘플링 프로파일러 또는 메모리 프로파일러로, 프로세스 외부에서 PHP VM 실행에 대한 정보를 읽습니다. 대상 스크립트를 변경하거나 확장을 로드하지 않고도 스크립트에서 성능 병목 현상이나 메모리 누수를 찾을 수 있습니다.
또는 PHP용 메모리 프로파일러 확장 프로그램인 arnaud-lb/php-memory-profiler를 사용해 볼 수도 있습니다. PHP 스크립트에서 메모리 누수를 찾는 데 도움이 됩니다.saloonphp/xml-wrangler – XML을 쉽게 읽고 쓸 수 있도록 설계된 간단한 PHP 라이브러리. veewee/xml도 확인해보세요 - PHP에서 XML로 걱정 없이 작업하는 데 필요한 모든 도구를 제공하는 패키지입니다.
jolicode/JoliMarkdown – 마크다운 콘텐츠를 위한 구문 수정기. 자세한 내용은 졸리마크다운 소개를 읽어보세요.
cerbero90/lazy-json – 프레임워크에 구애받지 않고 모든 차원과 소스의 JSON 파일을 Laravel 지연 컬렉션에 재귀적으로 로드하는 패키지입니다.
staabm/phpstan-baseline-analysis – PHPStan 기준 파일을 분석하고 집계된 오류 추세 보고서를 생성합니다.
spiral/json-schema-generator – DTO(데이터 전송 객체) 클래스에서 JSON 스키마를 생성하는 기능을 제공합니다.
Symfony
- Symfony 7 released
이번 릴리스의 새로운 기능에 대해 알아보려면 최신 기능 목록을 확인하세요. 또는 Alexander M. Turek의 Hello Symfony 7 슬라이드를 확인해 보세요.
Symfony 6.4도 7.0과 함께 출시되었습니다. 두 버전 모두 더 이상 사용되지 않는 기능에 대한 지원을 제외하고는 동일한 기능 세트를 포함하고 있습니다.
또한 Symfony 6.4는 장기 지원 버전으로 3년 동안 버그 수정, 1년 동안 보안 버그 수정이 제공됩니다. Symfony 7.0은 8개월 동안만 지원되는 일반 버전입니다. - HTMX와 심포니로 단일 페이지 애플리케이션 만들기 by Julien Cousin-Alliot.
- Symfony command에 대한 재시도 메커니즘 by Smaine Milianni.
- phpyh/service-dumper-bundle – 의존성 주입 서비스를 덤프하는 Symfony console command
Laravel
- Laravel Pulse announced - 라라벨 팀이 곧 출시될 무료 오픈소스 도구를 공개했습니다. 이 도구는 앱의 주요 성능 및 사용량 지표가 포함된 대시보드가 될 것입니다.
- Tinkerwell v4가 출시되었습니다 - 📺 Detail Dive에서 자세한 내용을 확인해 보세요.
- 이제 공식적으로 지원되는 MongoDB 라라벨 통합 - MongoDB는 커뮤니티가 주도하는 라라벨용 MongoDB 통합 개발 작업을 인수하여 그들의 제품 포트폴리오의 일류 시민으로 만들었습니다.
- 라라벨은 어떻게 작동하나요? 명쾌하게 설명합니다 by Benjamin Crozat.
- 라라벨 패키지 작성 프로세스 by David Carr.
- 정통적이지 않은 Eloquent II by Muhammed Sari.
- 제이미슨 발렌타의 라라벨의 캐싱 전략 by Jamison Valenta.
- laravel/pail - 터미널에서 라라벨 로그를 편리하게 볼 수 있는 도구.
- waterholeforum/core - 라라벨 기반 커뮤니티 플랫폼/포럼.
- BookStackApp/BookStack - PHP와 라라벨로 구축된 문서/위키 콘텐츠를 생성하는 플랫폼.
Other Frameworks
기타
- PHP 열거형 사용 모범 사례 by Jeff Ochoa.
- PER-CS v1.0(PSR-12)에서 PER-CS v2.0으로 마이그레이션하기 by PHP-FIG.
- PHP Curl 확장을 사용한 HTTP/3 요청 by Ayesh Karunaratne.
- PHP로 Caddy Server를 사용하는 방법 by Ayesh Karunaratne.
- PHP 앱에서 소수점(decimal) 작업하기 by Mark Scherer.
- 올바른 타입 안전 - PHP 배열 해킹 by James Seconde.
- Phpstan Filter Baseline by Markus Staab – 거대한 Phpstan Filter Baseline을 통해 작업하는 한 가지 방법.
- PHP 유튜버 목록 큐레이션.
- 바이트코드 수준에서 PHP 웹 애플리케이션을 자율적으로 해킹하는 방법 by Samuel Finixbit.
- 브레프 사례 연구: Bref로 서버리스 뱅킹 플랫폼을 운영하는 Treezor - 서버의 레거시 PHP 모놀리스로 시작하여 이 모놀리스를 람다(일명 “람다 안의 은행”)에 넣은 다음 마이크로서비스로 전환한 방법.
- PHP에서 (배열) 형 변환 연산자 마스터하기: 종합 가이드 by Damien Seguy.
- WP-Plugin-Architect - 코드 보안에 특별한 주의를 기울이면서 워드프레스 플러그인을 작성할 수 있는 사용자 정의 (채팅)GPT.
Cool #gpt trick I learned from a friend today:
— Tomas Votruba (@VotrubaT) November 16, 2023
1) create a private GPT
2) upload your #php project in a zip
3) ask it questions on how to improve it
Who knew this goes far beyond the 128k context window 😎
The results are impresive... feels like talking to myself with having… pic.twitter.com/nlOyFlmQ70- (역자주) 위 트윗의 댓글에서 언급한 업로드 방법: https://twitter.com/pwang_szn/status/1722932229436014772
Fun
- Sylius는 현재 Kickstarter에서 크라우드 펀딩 캠페인으로 ElePHPant를 제공하고 있습니다.
- 오리지널 핑크 코끼리가 판매 중입니다.
Conferences
앞으로 개최될 PHP 행사에 참석하여 발표를 신청해 보세요:
- SymfonyCon – Brussels, Belgium, December 7–8, 2023.
- Laracon EU – Amsterdam, The Netherlands, Feb 5–6, 2024.
- PHP UK – London, UK, February 15–16, 2024.
- 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
- International PHP Conference – Berlin, Germany, May 27–31, 2024 CFP
가까운 PHP 밋업이 언제 열리는지 궁금하다면 Tomas Votruba가 운영하는 멋진 밋업 애그리게이터 friendsofphp.org를 이용해 보세요. php.net에 캘린더도 있습니다.