PHP Annotated – February 2023
Roman Pronskiy가 쓰고 JetBrains에서 제공하는 PHP Annotated 2023년 2월의 번역/해석본입니다.
이 중에서 몇 가지 제 취향껏 골라 그 안의 내용도 좀 뒤져보고 개발새발 번역해서 소개합니다.
안녕하세요, 여러분!
PHP Annotated 2월호에 오신 것을 환영합니다. 엄선된 뉴스, 기사, 도구, 동영상 등 지난 한 달간 PHP 세계에서 일어난 가장 흥미로운 일들을 소개합니다.
News
PHP 8.0.28, PHP 8.1.16, and PHP 8.2.3 have been released.
PHP 8.0.28, PHP 8.1.16 및 PHP 8.2.3이 릴리스되었습니다.
❗️ 이들은 CVE-2023-0568, CVE-2023-0567, CVE-2023-0662 에 대한 수정이 포함된 보안 업데이트입니다.
당분간은 여전히 PHP 7.4를 사용하는 경우 Remi의 리포지토리에 백포트된 보안 수정 사항이 포함된 업데이트가 있습니다. 그러나 이 리포지토리는 Remi가 얼마나 많은 여유 시간을 제공할 수 있는지에 따라 달라지는 최선의 노력 프로젝트임을 명심하세요. 즉, 사용자에게 마이그레이션할 시간을 더 주기 위한 것이므로 향후 업데이트에 대한 보장은 없습니다.
Laravel v10 has been released
다음은 이 업데이트에 대해 자세히 알아보는 데 도움이 되는 몇 가지 리소스입니다:
- Jeffrey Way의 Laracasts: What’s New in Laravel 10
- Benjamin Crozat의 Laravel 10: the mindful upgrade guide
- Marcel Pociot의 The new Process facade in Laravel 10
- Laravel 팀의 laravel/pennant. 이 새로운 패키지는 Laravel 10과 함께 제공되며 애플리케이션에 대한 기능 플래그를 제공합니다.
팀에서 발표한 주요 변경 사항 중 하나는 전체 Laravel 패키지 세트에 유형 선언을 추가한 것입니다.
이로 인해 컨트롤러 스텁(stub)에서 사용자에게 문제가 발생했습니다. 그리고 얼마 후 Laravel 팀은 유형 선언을 모두 제거하기로 결정했습니다.
Martin Joo(@mmartin_joo)의 트윗
All the drama about the Controller return types🚀🎉😀
Taylor Otwell(@taylorotwell)의 트윗
컨트롤러 스텁에서 반환 유형을 제거하기로 결정했습니다. 👍
원한다면 추가하세요. ✅
PHPUnit 10 is out
2년간의 개발 끝에 Sebastian Bergmann과 PHPUnit 팀이 이 major 릴리스를 발표했습니다.
이번 릴리즈는 PHP 7이 PHPUnit에 그랬던 것처럼 대규모 정리, 리팩토링, 현대화를 통해 향후 개발의 토대를 마련한 것입니다.
Attribute, 정적 데이터 공급자(static data providers), 더 적은 오류 알림(notice), 더 간소화된 이벤트 시스템을 제공합니다.
- PHPUnit 10은 E_USER_NOTICE를 예외로 변환하지 않으므로 테스트 실행이 중단되지 않습니다
PHP Release Radar 채널에 게시된 PHPUnit 개발자와의 인터뷰를 확인해 보세요: PHP Release Radar – Episode 14: PHPUnit 10.0.
이번 릴리즈의 내부 변경 사항 중 하나는 새로운 이벤트 시스템으로, PHPUnit extension 개발자에게 영향을 줍니다. 새로운 이벤트 시스템으로 PHPUnit 확장하기 게시물에서 자세히 알아보세요.
A big release for the PER coding style is coming.
PER 코딩 스타일에 대한 대규모 릴리스가 곧 출시됩니다.
PER 코딩 스타일은 코드를 더 읽기 쉽게 만들고 “여기에 공백을 추가해야 할까요?” 또는 “이 문장은 별도의 줄에 넣어야 할까요?”와 같은 질문을 끝내고 정말 중요한 일에 시간을 할애할 수 있도록 하는 것을 목표로 하며, PER은 롤링 문서이므로 팀이 여러 PSR을 만드는 대신 여러 버전에 태그를 지정하게 됩니다.
버전 1.0.0은 PSR-12의 복사본이었습니다. 다음 버전은 최신 PHP 기능을 포함하도록 사양을 업데이트하고 문제를 수정하는 데 중점을 둘 것입니다.
GitHub 이슈 탭(https://github.com/php-fig/per-coding-style)에 피드백을 남길 수 있습니다.
PHP Core
대부분의 핵심 소식은 PHP 재단에서 제공하는 PHP Core Roundup 시리즈에서 자세히 다루고 있으므로 여기서는 간략하게만 언급하겠습니다:
❌ RFC: Asymmetric Visibility
Ilija Tovilo와 Larry Garfield는 필요한 피드백을 받아 이 RFC의 수정 버전을 발표할 예정이지만, 지금은 프로퍼티에 대한 후크와 접근자를 추가하는 제안에 집중할 것입니다.
✅ RFC: Readonly amendments #PHP 8.3
class Foo { |
📣 RFC: Path to Saner Increment/Decrement operators #PHP 8.3
RFC: 더 건전한 증분/감소 연산자로 가는 길 #PHP 8.3
George Peter Banyard는 ++
와 --
연산자의 동작을 일관되게 만들 것을 제안합니다.
📣 RFC: Pass Scope to Magic Accessors #PHP 8.3
Nicolas Grekas와 Ilija Tovilo가 호출 범위를 매직 접근자에게 전달하는 것을 제안했습니다.
논의 과정에서 커뮤니티 회원들은 범위를 올바르게 반환하는 별도의 함수를 추가할 것을 제안했고, RFC 작성자는 이 아이디어로 방향을 전환할 수 있습니다.
📊 RFC: Typed class constants #PHP 8.3
Benas Seliuginas와 Máté Kocsis는 클래스 및 인터페이스의 콘텐츠에 대한 타입 선언을 허용할 것을 제안합니다.
다음은 이 문제와 타입 상수가 어떻게 도움이 되는지 보여주는 몇 가지 예제 코드입니다:
interface I { |
📣 RFC: Working With Substrings #PHP 8.3
Thomas Hruska는 PHP에 꽤 많은 삶의 질 개선 기능을 구현했으며, 이 RFC는 서브스트링 처리를 최적화하기 위해 그 중 일부를 코어로 가져온 최초의 RFC입니다.
PhpStorm
PhpStorm 2023.1 Early Access Program Is Open
PhpStorm 2023.1 Early Access 프로그램 시작
곧 출시될 주요 릴리스에서 다음과 같은 새로운 기능을 이미 사용해 볼 수 있습니다:
- 3v4l.org에서 PHP 스크립트 실행 가능.
- 인기 있는 PHP 패키지의 공유 인덱스를 포함한 성능 개선.
- PhpStorm에서 로컬로 구축되는 일반 인덱스와 달리 공유 인덱스는 한 번 생성되고 나중에 필요할 때마다 다른 컴퓨터에서 재사용됩니다.
- 새로운 UI에 대한 많은 개선.
- 사용자 정의 정규식 기반 검색 및 바꾸기 검사.
Command Line Launcher
터미널 명령을 실행하고 관리하는 데 도움이 되는 PhpStorm 플러그인입니다. 이 플러그인을 사용하여 서버, Docker를 시작하거나 원격 서버에서 명령을 실행할 수도 있습니다.
Tools
- crwlrsoft/crawler 1.0 – 신속한 (웹) 크롤러 및 스크레이퍼 개발을 위한 라이브러리입니다.
crwlr 라이브러리를 사용해야 하는 10가지 좋은 이유를 확인하세요. - olvlvl/composer-attribute-collector – PHP 8 attribute의 대상을 검색하는 편리하고 거의 제로 비용에 가까운 방법.
- brick/json-mapper – JSON 데이터를 강하게 타입이 지정된 PHP DTO에 매핑합니다.
/r/php subreddit에 제안된 것처럼, 꽤 많은 성숙한 대안이 있습니다: - boxblinkracer/phpunuhi - PHPUnuhi는 번역의 유효성을 검사하고 관리하기 위해 쉽게 구성할 수 있는 프레임워크입니다.
- markrogoyski/itertools-php - 이 패키지는 이터러블 컬렉션 작업을 위한 방대한 함수 세트를 제공합니다. Laravel이나 Doctrine 컬렉션과 같은 다른 컬렉션 라이브러리와 가장 큰 차이점은 이터러블을 배열로 변환하지 않기 때문에 제너레이터로 작업할 때 메모리 효율이 훨씬 높다는 점입니다.
- Crell/mastobot - Mastodon 계정을 위한 간단한 개인 스케줄링 봇입니다.
자세한 내용은 Larry Garfield의 블로그 포스팅 Mastobot: For your Fediverse PHP posting needs을 읽어보세요. - paratestphp/paratest - PHPUnit에 병렬 테스트를 지원하는 paratest의 버전 7.0이 출시되었습니다.
- TheDragonCode/benchmark - 서로 다른 두 코드 블록을 실행하는 데 걸리는 시간을 비교할 수 있는 간단한 도구입니다.
- parsica-php/parsica - 특이한 구문을 가진 파서 빌더:
$parser = between(char('{'), char('}'), atLeastOne(alphaChar()));
- Sammyjo20/Saloon 2.0 - 이 패키지의 아이디어는 서비스용 SDK 생성을 단순화하거나 다양한 API에 대한 액세스를 단일 스타일로 구성하는 것입니다.
- yiisoft/validator - 독립적으로도 사용할 수 있는 Yii 프레임워크의 강력한 유효성 검사기 패키지입니다.
Symfony
- TaggedLocator로 더 나은 심포니 애플리케이션을 디자인하는 방법 by Gregoire Pineau.
- 일대다 Doctrine collection 최적화 by Yan Ivanov.
- API Platform 3.1 is out! – Symfony를 기반으로 구축된 이 성숙한 프레임워크를 통해 REST 및 GraphQL API 등을 만들 수 있습니다.
Laravel
AI로 라라벨 예외를 해결해 보세요. by Marcel Pociot.
라라벨 생텀을 사용하여 동적 기능 생성하기 by Freek Van der Herten.
라라벨에 리포지토리가 필요하지 않을 수도 있다: 3가지 대안 by Mazen Touati.
- 어차피 Laravel을 쓰면 보통은 Eloquent에 종속되어 사용
- 교체 가능성, 테스트 가능성을 높여주는 repository 패턴은 대규모 코드에서 잘 운용하기 어려움
- 그래서 이 셋으로 대체 가능 : scope 사용, 복잡한 데이터를 가져오고 캐싱하는 custom 쿼리, 데이터를 조작하기 위한 Action
Request 단의 유효성 검사 by Tighten.
CSP를 사용하여 Laravel 애플리케이션의 보안을 개선하는 방법 by Ashley Allen.
PestPHP로 JSON:API Endpoint 테스트하기 by Steve (King) McDougall.
대규모 Laravel 애플리케이션에서 Route 관리하기 by Steve (King) McDougall.
Other Frameworks
- Yii news 2023, issue 1 by Wilmer Arambula.
- Spiral/framework v3.6.0 – 이미 알고 계실지도 모르지만, 이 인상적인 프레임워크를 개발한 팀도 RoadRunner입니다. 최신 릴리스에서는 fiber를 지원하는 컨테이너에서 격리된 메모리 범위라는 PHP 프레임워크를 위한 고유한 기능을 만들었습니다. 이는 장기 실행(데몬) PHP 애플리케이션의 메모리 누수를 제한하는 데 도움이 됩니다.
프레임워크의 또 다른 흥미로운 아이디어는 CLI 명령을 사용하여 PHP attribute를 만드는 것입니다.
기타
How to extend lifetime of legacy PHP applications by Ayesh Karunaratne (PHP.Watch).
Hakana: Taking Hack Seriously by Matt Brown from Slack, and author of Psalm.
Slack의 Matt Brown과 Psalm의 저자 Matt는 Hakana라는 새로운 Hack용 정적 분석기를 발표했습니다. 이 분석기는 Psalm을 기반으로 하며 Rust로 작성되었습니다.
Hakana는 Psalm보다 훨씬 빠르지만 PHP와 호환되지 않습니다. 하지만 Matt는 호환이 가능할 것이라고 언급했습니다:
쉽지는 않겠지만, PHP 코드베이스가 매우 큰 회사라면 Hakana를 포크하여 PHP 코드를 분석할 수 있도록 변경하는 것을 고려할 수 있습니다.
Good Bye, Monorepo by Tomas Votruba.
Documenting the system under test in PHPUnit by Andreas Möller.
테스트 대상 시스템(system under test)을 PHPUnit으로 문서화하기.
PHP Development Server <= 7.4.21 – Remote Source Disclosure – A vulnerability analysis.
PHP 개발 서버 <= 7.4.21 - 원격 서버의 소스 코드 누출 - 취약점 분석.
PHP wishlist:
- 파이프(pipe) 연산자 by Seb De Deyne .
- 향후 버전의 PHP에서 보고 싶은 4가지 by Ryan Chandler.
- Type aliases
- Multi-line match arms
- Generics
- Pattern matching on value types
- 더 많은 것을 원하신다면 Brent의 글도 있습니다: PHP에 대해 내가 바꾸고 싶은 것들.
PHPLift – Compatibility Guide
Anna Filina(@afilina)의 트윗
제가 한동안 작업해 온 프로젝트를 발표합니다: PHPLift입니다.
앱의 PHP 버전을 업그레이드하는 데 도움이 되는 가이드입니다. 현재 진행 중인 작업이므로 정기적으로 콘텐츠를 추가할 예정입니다. 누군가에게 도움이 되길 바랍니다. 즐거운 업그레이드 되세요!
azjezz/typed
Sergii Shymko(@SergiiShymko)의 트윗
와우! PHP에서 로컬 변수를 강력하게 입력할 수 있습니다! 이 변수는 아래에 생성된 익명 클래스의 유형화된 속성을 참조합니다.
https://3v4l.org/T6GFS심지어 모든 기본 유형에 대한 선언이 포함된 Composer 패키지도 있습니다.
|
Video
PHP Annotated Monthly, January - 놓치신 분들을 위해 브렌트와 로만이 PHP Annotated의 동영상 버전을 제작하고 있습니다. 최신 편을 확인하시고 PHP Annotated YouTube 채널을 구독하세요.
Conferences
오프라인 이벤트가 한창 진행 중입니다. 방문하고 발표를 신청해 볼 만한 대형 PHP 행사를 확인해 보세요:
- Php[tek] – Chicago (US), May 16-18, 2023.
- phpday 2023 – Verona (Italy), May 18-19, 2023.
- International PHP Conference – Berlin (Germany), May 22-26, 2023.
다음 PHP 밋업이 언제인지 궁금하다면 Tomas Votruba의 멋진 밋업 애그리게이터 friendsofphp.org에서 확인할 수 있습니다. php.net 이벤트에도 캘린더가 있습니다: 2023년 3월.