PHP Annotated – July 2023
Roman Pronskiy가 쓰고 JetBrains에서 제공하는 PHP Annotated 2023년 7월호입니다.
PHP Annotated 7월호에 오신 것을 환영합니다! 엄선된 뉴스, 기사, 도구, 동영상을 통해 지난 한 달간 PHP 커뮤니티에서 가장 흥미로운 발전 사항을 요약해드립니다.
Highlights
PHP 8.3.0 beta 1 released
첫 번째 베타 릴리스를 통해 활발한 개발 단계가 종료되었으므로 8.3 브랜치의 새로운 기능 및 변경 사항 목록은 최종 버전으로 간주할 수 있습니다.
Mac을 사용하는 경우 Nuno Maduro의 PHP 8.3 설치 방법을 확인하세요. 이외에는 Docker 이미지가 번거로움 없이 시도해 볼 수 있는 가장 좋은 옵션일 것입니다.
Thomas Jarrand 덕분에 이제 php.net에 모든 PHP 브랜치의 현재 상태를 확인할 수 있는 엔드포인트가 생겼습니다: php.net/releases/states.
PHP 9 logo
elePHPant 디자인의 저자이자 PHP 8 로고의 저자 Vincent Pontier가 PHP 9 로고에 대한 아이디어를 떠올렸습니다:
PHP Version Stats – July, 2023
클라이언트가 packagist.org로 보내는 데이터(예: 컴포저 업데이트 명령 실행 시)를 기반으로 사용하는 PHP 버전에 대한 정기적인 개요입니다. 68.8%의 클라이언트가 PHP 8.*을 사용하고 있으며, PHP 7.*은 29.7%를 차지합니다. PHP 8은 59.7%였던 작년과 비교하면 느리지만 좋은 성장세입니다.
사용자 세그먼트가 약간 다를 수 있는 Remi 리포지토리 통계에 따르면, 35%의 사용자가 PHP 8.*을, 63%의 사용자가 PHP 7.*을 사용하고 있습니다.
PHP download numbers for 2 weeks:
— RemiRepository (@RemiRepository) June 20, 2023
- 8.2: 9%
- 8.1: 16%
- 8.0: 10%
- 7.4: 27%
- 7.3: 8%
- 7.2: 12%
- 7.1: 15%
- 7.0: 1%
- 5.6: 3%
So 2/3 for EOL versions pic.twitter.com/QwZvO9e3zC
참고로 워드프레스는 다음 워드프레스 6.3 릴리스에서 PHP 5 지원을 중단할 예정입니다. 현재 워드프레스 설치의 5.5%가 여전히 PHP 5를 사용하고 있습니다.
PHP Core
대부분의 코어 소식은 PHP 재단의 PHP Core Roundup 시리즈에서 자세히 다루고 있으므로 여기서는 몇 가지만 간략하게 언급하겠습니다:
❌ RFC: Interface Default Methods
https://wiki.php.net/rfc/interface-default-methods
Levi Morisson의 이 RFC는 많은 논의를 불러일으켰습니다.
Levi는 인터페이스에 메서드에 대한 구현이 있을 수 있다고 제안했는데, 이는 Kotlin, Swift(extend protocols), Java, C# 및 기타 언어에서 가능한 것과 유사합니다.
다중 상속이 잘못되었고 인터페이스에 구현이 있어서는 안 된다고 생각한다면 래리 가필드는 이상한 아이디어를 거부하기 전에 다시 한 번 생각해 볼 것을 제안합니다.
Brent도 What is a Best Practice? 동영상에서 이에 대해 이야기하고 있으며, “Is A” or “Acts As” 게시물에서 더 자세히 설명합니다.
조지가 언급했듯이 일부 사람들은 이 제안이 PHP 8.3의 기능 동결에 너무 근접한 급격한 변화이기 때문에 반대표를 던졌을 수도 있습니다.
✅ RFC: Marking overridden methods (#[\Override])
https://wiki.php.net/rfc/marking_overriden_methods
PHP 8.3에는 #[\Override]
속성이 새로 추가됩니다. 메서드에 적용하면 엔진이 부모 클래스 또는 구현된 인터페이스에 같은 이름의 메서드가 있는지 확인하라는 메시지를 표시합니다.
이는 Java, Kotlin, Swift 및 C#과 같은 다른 언어의 기능과 유사합니다.
✅ RFC: Path to Saner Increment/Decrement operators
https://wiki.php.net/rfc/saner-inc-dec-operators
++
및 --
연산자의 동작은 PHP 8.3에서 더욱 일관성 있게 변경됩니다.
이 문제를 실제로 보여주고 싶다면 이 예제를 확인해 보세요:
-> PHP 8.2까지 위 문제의 정답은 7입니다.#PHP is always good for some excitement during the day. What do you expect the following code to print?$value = '5d9';$value++;$value++;$value++;
— alcaeus (@alcaeus) June 29, 2023
var_dump($value);
✅ RFC: PDO driver specific subclasses
https://wiki.php.net/rfc/pdo_driver_specific_subclasses
현재 PHP에는 모든 데이터베이스에 대해 단일 PDO 클래스가 있습니다. 그러나 설치한 실제 DB 드라이버 확장에 따라 이 클래스는 다른 메서드 집합을 가질 수 있습니다.
Dan Ack의 RFC는 지원되는 각 데이터베이스에 대해 별도의 클래스가 있는 특정 서브클래스 집합을 추가할 것을 제안합니다.
✅ PR: Add fallback value syntax for ini variables
https://github.com/php/php-src/pull/11351
가브리엘 폰테스가 PHP 8.3에 깔끔하게 추가한 기능입니다! 환경 변수 외에 php.ini 설정에서 기본값을 사용할 수 있게 됩니다:
xdebug.start_with_request = ${PHP_XDEBUG_START_WITH_REQUEST:-default}
dunglas/php-dev-docker – Docker image to hack the PHP interpreter.
dunglas/php-dev-docker – PHP interpreter를 해킹하기 위한 Docker 이미지.
PHP 버그(segmentation faults)를 추적하고, 확장 기능 또는 PHP 인터프리터 자체를 개발하는 데 편리한 Docker 이미지입니다.
Kévin Dunglas는 PHP 인터프리터를 디버깅하고 개발하기 위해 특별히 Docker 이미지를 준비했습니다. PHP 스크립트로 인해 세그폴트가 발생하나요? PHP 확장을 개발하고 싶으신가요? 이 이미지가 바로 여러분을 위한 것입니다! 필요한 모든 도구가 포함되어 있습니다.
Tools
NativePHP – PHP로 데스크톱 애플리케이션 개발
Marcel Pociot가 만든 이 도구는 일반적인 웹 앱을 구축할 때와 마찬가지로 크로스 플랫폼 데스크톱 앱을 구축할 수 있는 간단한 API와 툴을 제공합니다.
이 도구는 일렉트론이나 타우리를 사용하므로 이름에 ‘네이티브’라는 단어가 약간 오해의 소지가 있을 수 있습니다. 하지만 PHP 개발자의 관점에서 보면 이 모든 것이 익숙한 도구와 구문으로 멋지게 포장되어 있습니다. Marcel이 이 발표에서 작동 방식을 설명했습니다.현재까지는 Laravel에서만 작동하지만, 다른 프레임워크와 네이티브 PHP용 어댑터를 구현할 예정이라고 합니다.
다음은 NativePHP로 구축된 앱의 예시입니다. 크론 작업을 관리하기 위한 간단한 도구인 simonhamp/cronikl입니다.
https://herd.laravel.com/ - 원클릭 PHP 개발 환경.
Marcel Pociot와 Beyond Code의 또 다른 도구입니다. macOS에서 PHP를 위한 로컬 개발 환경으로, 모든 것이 미리 빌드되어 제공되므로 홈브루나 다른 것을 다룰 필요가 전혀 없습니다.
저는 마찬가지로 로컬 환경을 제공하지만 더 많은 유연성을 제공하는 IndigoStack의 열렬한 팬입니다.aschmelyun/diode - Laravel을 위한 WASM 기반 로컬 개발 환경과 wp-now에서 영감을 얻은 로컬 개발 환경에 대한 또 다른 접근 방식입니다. 이 비디오는 비하인드 스토리를 제공합니다.
yzen-dev/plain-to-class - 이 Hydrator는 데이터를 유형화된 객체로 변환합니다. 상속이 필요하지 않고 프레임워크에 의존하지 않으며 벤치마크에 따르면 가장 효과적인 방법 중 하나입니다.
cerbero90/json-parser - 종속성이 없는 구문 분석기로 모든 소스에서 메모리 효율적인 방식으로 대용량 JSON을 읽을 수 있습니다.
alexandre-daubois/lazy-stream - 필요할 때만 스트림에 데이터를 쓰고 읽을 수 있습니다.
NumPower - 이 PHP용 C 확장 프로그램은 PHP에서 효율적인 과학 컴퓨팅을 위한 기반을 제공하고, 이미 존재하며 이를 활용할 수 있는 머신 러닝 도구와 라이브러리를 활용하기 위해 만들어졌습니다.
“A library for numerical calculations and scientific computing made for PHP”
Symfony
Romaixn/gosumer - 심포니 메신저 메시지를 Go로 소비하기. 소개 게시물을 확인하세요.
Laravel
Laracon Recap - 신제품 발표: Herd, Volt, Folio, Prompts(AI와 관련이 없음), NativePHP, Pest 2.9 및 Livewire v3. 모든 강연은 Laravel YouTube 채널에서 시청할 수 있습니다.
blinq-dev/laravel-synth - ChatGPT로 라라벨 코드를 생성하세요.
yllw-digital/laravel-chatgpt-mock-api - ChatGPT 프롬프트를 사용하여 라라벨에서 스마트 API 모의 프로그램을 생성하세요.
라라벨 개발자가 코드에서 저지르는 8가지 나쁜 습관 by Code With Dary.
- Not Separating Validation from Controllers
- Not Following the Single Responsibility Principle (SRP)
- Not Using Middlewares (or not correctly)
- Not Testing Code
- Not Using Database Migrations
- Not Using Route Model Binding
- Naming Conventions
- Not Using Eloquent Properly
📺 Steve, Brent, Bobby와 함께 Laravel 앱을 구성하는 방법에 대한 강력한 의견을 나눕니다.
Other frameworks
기타
재미와 이익을 얻기 위한 Rust로 PHP 확장 프로그램 구축하기 by Ahmad Rosid.
PHP로 나만의 템플릿 엔진 구축 - 렌더링 및 에코 by Ryan Chandler.
개발자가 테스트를 작성해야 하는 3가지 강력한 이유by Christoph Rumpel
📺 Composer, Packagist, and Open Source – Interview with Jordi Boggiano.
Too much fun with legacy PHP hacks today
-> PHPStan을 위한 해킹인 것으로 보입니다. 다음 PR을 참고하세요. https://github.com/reactphp/promise/pull/246#discussion_r1235943582Too much fun with legacy PHP hacks today, time to go home! 😃👋 #php pic.twitter.com/QqFr99rcta
— Christian Lück (@another_clue) June 20, 2023
Fun
Do you like mysteries? Here's one for you, PHP lovers. 🐘 https://t.co/EodRpuYGny pic.twitter.com/4kC9X0WnDz
— Nuno Maduro (@enunomaduro) June 19, 2023If your app has more than 1 php file you have launched too late.
— Jon Yongfook (@yongfook) July 8, 2023
Conferences
방문하고 발표를 신청할 만한 다음 PHP 행사를 확인해 보세요:
- PHPKonf – Istanbul, Turkey, September 2, 2023. CFP 🆕
- CakeFest – Los Angeles, CA, USA, September 28–Oct 3, 2023.
- Longhorn PHP – Austin, TX, USA, November 2–4, 2023.
- PHPCon Poland – Zawiercie, Poland, November 17–18, 2023. CFP 🆕
- Laracon AU – Sydney, Australia, November 16–17, 2023.
- SymfonyCon – Brussels, Belgium, December 7–8, 2023. CFP
- PHP UK – London, UK, February 15–16, 2024. CFP 🆕
다음 PHP 밋업이 언제 열리는지 궁금하다면 Tomas Votruba가 운영하는 멋진 밋업 애그리게이터 friendsofphp.org를 참고하세요. php.net - 이벤트에도 캘린더가 있습니다: 2023년 6월.