PHP Annotated – July 2022
Roman Pronskiy가 쓰고 JetBrains에서 제공하는 PHP Annotated 2022년 7월의 번역/해석본입니다.
이 중에서 몇 가지 제 취향껏 골라 그 안의 내용도 좀 뒤져보고 개발새발 번역해서 소개합니다.
안녕하세요!
PHP Annotated 7월호에 오신 것을 환영합니다. 여기에서 선별된 뉴스, 기사, 도구 및 비디오를 포함하여 지난 한 달 동안 PHP 세계에서 일어난 가장 흥미로운 일을 따라잡을 것입니다.
News
PHP 8.2.0 Alpha 2 and PHP 8.2.0 Alpha 3 have been released
세 번째이자 마지막 알파가 예정대로 출시되었습니다. 다음 릴리스는 7월 21일에 예정된 PHP 8.2.0 Beta 1입니다.
역자 주: 번역 시간 기준으로 21일이 지나 8.2.0 Beta 1은 출시되었습니다. 다음 릴리스는 8월 4일에 예정된 PHP 8.2.0 Beta 2입니다.
PHP 8.2에 추가될 기능에 대한 자세한 목록은 php.watch 또는 stitcher.io를 참조하십시오 .
PHP 8.0.21 and PHP 8.1.8 have been released
PHP Foundation Update, June 2022
후원자를 위한 월간 업데이트를 확인하십시오.
- 개발자가 달성한 것, 새로운 후원자 및 재단에 기여할 수 있는 재정적 방법 등
php.net redesign is being discussed
디자인 실험으로 현재 #php 웹사이트를 개편했습니다. 더 수정할 수 있는 부분이 많이 있지만 지금까지는 만족합니다. 어떻게 생각하세요?
Mike van Riel(@mvriel)의 트윗
한편 Andreas Möller 덕분에 php.net 소스 코드는 이제 friendsofphp/php-cs-fixer를 사용하여 코딩 표준 문제를 수정 합니다.
PHP의 메인 사이트 업데이트를 돕고 싶다면 기여 가이드(contributing guide)를 확인하세요 .
A popular async framework for PHP ReactPHP turned 10
인기 있는 PHP 비동기 프레임워크 ReactPHP 10
10주년을 기념하기 위해 팀은 async 및 await 기능이 포함된 완전히 새로운 비동기 구성 요소인 reactphp/async를 출시했으며 이는 PHP 8.1+와 같은 fiber를 기반으로 구축되었습니다.
Cees-Jan Kiewiet의 My road to fibers with ReactPHP를 읽어보세요.
Is PHP dead?
한 번 그리고 영원히 대답을 남겼습니다.
PHP Core
Core 뉴스의 대부분은 PHP Foundation의 PHP Core Roundup 시리즈에서 자세히 다룹니다 . 이 시리즈의 다음 에피소드가 곧 출시될 예정이므로 업데이트에 대해 간단히 언급하겠습니다.
✅ RFC: Disjunctive Normal Form Types #PHP 8.2
RFC: Disjunctive Normal Form Types #PHP 8.2
Disjunctive Normal Form 유형에 대한 지원이 PHP 8.2에 승인되었습니다. 결합 및 교차 유형을 혼합할 수 있습니다.
class Foo { |
Derick Rethan가 George Peter Banyard와 함께 하는 🔈 PHP Internals News 팟캐스트 에피소드 103에서 자세히 알아보십시오.
✅ RFC: Fetch properties of enums in const expressions #PHP 8.2
RFC: const 표현식에서 enum 속성 가져오기 #PHP 8.2
PHP 8.2에서는 -> / ?-> 를 사용하여 상수 표현식에서 enum 속성을 가져올 수 있습니다.
enum A: string { |
✅ RFC: Random Extension Improvement #PHP 8.2
RFC: 랜덤 확장 개선 #PHP 8.2
몇 가지 문제가 “Random Extension 5.x” RFC의 투표가 시작된 이후에만 제기 되었습니다(적절한 토론이 부족했기 때문에). 이러한 각 문제에 대해 투표 옵션을 만들고 추가 결정을 내리기로 했고 모두 통과했습니다.
✅ RFC: Make the iterator_*() family accept all iterables #PHP 8.2.
RFC: iterator_*() 패밀리가 모든 이터러블 #PHP 8.2를 허용하도록 합니다.
PHP 8.2에서 iterator_to_array()와 iterator_count()의 $iterator
파라미터는 \Traversable
에서 iterable
(예: \Traversable|array)로 확장됩니다.
function foo(iterable $foo) { |
✅ RFC: Constants in Traits #PHP 8.2
RFC: Trait에서의 상수 #PHP 8.2
PHP 8.2에서는 현재 property에서 가능한 것과 동일한 방식으로 Trait에 상수를 정의할 수 있습니다.
trait Foo { |
❌ RFC: New Curl URL API
❌ RFC: json_encode indentation
❌ RFC: Stricter implicit boolean coercions
❌ RFC: Create a global login system for php.net
❌ RFC: Short Closures 2.0
Marcel Pociot(@marcelpociot)의 트윗
다음에 승인될 수 있도록 RFC를 개선해 봅시다.🤞
🤔 RFC: Auto-implement Stringable for string backed enums
RFC: 문자열 지원 열거형에 대한 Stringable 자동 구현
이 RFC는 문자열을 지원하는 열거형이 Stringable을 자동으로 구현하기를 제안하지만 여전히 메서드의 사용자 영역 구현은 허용하지 않습니다.
🤔 RFC: PDO driver specific sub-classes
💡 RFC: Unify PHP’s typing modes (aka remove strict_type declare)
RFC: PHP의 타이핑 모드 통합(strict_type 선언 제거라고도 함)
타입 캐스팅 사용 및 개발자 부담에 미치는 영향에 대한 고려와 함께,
strict_type를 PHP(9+)에서 기본값으로 변경하는 draft 아이디어입니다.
PHP는 다른 언어와 비교하여 작동할 수 있는 두 가지 입력 모드가 있습니다. 하나는 너무 느슨하고 다른 하나는 너무 엄격합니다. 이 RFC는 이 두 모드의 존재 이유, 단점, 두 모드를 다시 통합하기 전에 변경해야 할 사항에 대해 설명합니다.
Tools
laravel/pint
laravel/pint – 미니멀리스트를 위한 PHP 코드 스타일 수정기(fixer). 기본적으로 FriendsOfPHP/PHP-CS-Fixer 래퍼지만 더 쉬운 구성과 멋진 출력을 제공합니다.
DaveLiddament/php-language-extensions
DaveLiddament/php-language-extensions - PHP 언어 확장을 정의하기 위한 속성(정적 분석에 의해 시행됨): #[Friend], #[Package]등.
currently in BETA.
RobiNN1/phpCacheAdmin
RobiNN1/phpCacheAdmin – Redis, Memcache(d) 및 OPCache용 웹 대시보드.
thecodingmachine/safe
thecodingmachine/safe – 에러가 발생하면 false
를 반환하는 대신 예외를 발생시키도록 재작성된 PHP 함수 모음.
use function Safe\file_get_contents; |
cerbero90/enum
cerbero90/enum – enum 기능을 강화하기 위한 종속성 없는 PHP 라이브러리.
PrinsFrank/standards
PrinsFrank/standards – ISO3166, ISO4217, ISO639 등 PHP Enum의 표준 모음입니다.
soatok/cupcake
soatok/cupcake – 간단하고 안전한 HTML form(생성 및 처리)을 위한 PHP 라이브러리입니다.
T-Regx/T-Regx
T-Regx/T-Regx – 현대 표준에 부합하는 PHP 정규식입니다. readme에서 preg_*
불일치에 대한 섹션을 확인하십시오.
어떤 인자는 preg_*
함수에 심각한(fatal) 에러를 발생시킵니다. T-Regx는 이를 예측하고, catch할 수 있도록 예외를 던집니다.
deComplex.me
deComplex.me – 두 코드 블록의 복잡성을 나란히 비교하는 웹 도구입니다.
PiotrPress/wordpress-hooks
PiotrPress/wordpress-hooks – attribute에 대한 좋은 사용 사례입니다! 라이브러리를 사용하면 WordPress Hooks(필터 및 작업)를 개체의 메서드에 자동으로 추가할 수 있습니다.
markrogoyski/itertools-php
markrogoyski/itertools-php – 루프를 강화하는 PHP 반복 도구.
Composer 2.4 will be released later this year
Composer 2.4는 올해 말에 출시될 예정이며 두 가지 새로운 명령을 제공합니다.
- Ayesh Karunaratne의 New composer audit Command and security audits.
- Ayesh Karunaratne의 New composer bump Command.
Symfony
Launched ux.symfony.com and released 4 New UX Components.
ux.symfony.com을 출시하고 4개의 새로운 UX 컴포넌트를 출시 했습니다 . 이 웹사이트는 각 UX 구성 요소를 만지고 샘플링하는 놀이터입니다.
Twig Smoke Rendering
Twig Smoke Rendering – Fortune Favors the Bold by Tomas Votruba.
Laravel
Vite is now the default frontend asset bundler in new Laravel projects
Vite는 이제 Breeze 및 Jetstream을 포함해 새로운 Laravel 프로젝트의 기본 프론트엔드 asset 번들러 입니다.
Taylor Otwell(@taylorotwell)의 트윗
새로운 Laravel 프로젝트가 Vite를 사용하여 프론트엔드 자산을 번들로 제공한다는 소식을 전하게 되어 기쁩니다. Breeze와 Jetstream도 업데이트되었습니다. 🔥
Inertia Vue 또는 React와 함께 새로운 Breeze/Vite 스택을 사용할 때 번개처럼 빠른 핫 모듈 교체를 경험하십시오. ⚡
Christoph Rumpel 의 Moving A Laravel Webpack Project To Vite 튜토리얼을 확인하십시오.
hammerstonedev/sidecar
hammerstonedev/sidecar – 이 패키지를 사용하면 Laravel 애플리케이션에서 AWS Lambda 기능을 배포하고 실행할 수 있습니다. 사용 사례의 예는 Browsershot을 통해 스크린샷을 만드는 것 입니다.
calebporzio/parental
calebporzio/parental – STI(Single Table Inheritance, 단일 테이블 상속) 기능을 Eloquent에 제공합니다.
STI : 모델을 확장하지만(일반적으로 특정 동작을 추가하기 위해) 동일한 테이블을 참조하는 것.
spatie/laravel-onboard
spatie/laravel-onboard – 앱에 대한 단계별 사용자 온보딩을 생성하기 위한 패키지입니다.
zgabievi/laravel-promocodes
zgabievi/laravel-promocodes – 강력한 쿠폰 및 프로모션 코드 생성기.
abrouter/laravel-abtest
abrouter/laravel-abtest – Laravel로 A/B 테스트를 실행하는 간단한 패키지입니다.
Running PHPStan on max with Laravel by Steve McDougall.
https://laravel-news.com/running-phpstan-on-max-with-laravel
PHPStan을 최대한으로 실행하기.
Add comments to SQL queries made by Laravel by Freek Van der Herten.
https://freek.dev/2279-add-comments-to-sql-queries-made-by-laravel
쿼리의 출처를 쉽게 찾아낼 수 있도록 Laravel이 만든 쿼리에 주석을 추가합니다.
Containerizing Laravel Applications by Matt Casperson.
https://www.honeybadger.io/blog/containerizing-laravel-applications/
기존 Laravel 애플리케이션을 컨테이너화하는 과정.
기타
The very useful variadic argument by Damien Seguy.
https://www.exakat.io/en/the-very-useful-variadic-argument/
정적 변수는 함수 호출이 끝날 때 죽지 않고 다음 호출까지 살아 있습니다.
class A { |
PHP 8.0까지는 호출되는 클래스에 따라 고유한 정적 변수가 존재했습니다만, 8.1부터 바뀌었습니다.
이 글에서는 정적 변수의 문제와 이를 제거하는 방법을 설명합니다.
5 ways to give a name to your booleans by Damien Seguy.
bool에 이름을 지정하는 5가지 방법 - Damien Seguy
- 상수로 만들고
- enum으로 전환하고
enum Comparison {
case STRICT;
case LOOSE;
}
function foo(bool $comparison) {}
function goo(Comparison $comparison) {}
foo(true);
goo(Comparison::STRICT); - named parameter를 사용하고
$v = in_array($needle, $haystack, strict: true);
- dummy 할당(assignation)을 사용하고
$v = in_array($needle, $haystack, $strict = true);
- comment를 활용
$v = in_array($needle, $haystack, /\* strict \*/ true);
Top 100 PHP classes that you should know by Damien Seguy.
당신이 알아야 할 100대 PHP 클래스 - Damien Seguy.
PHP version stats: July, 2022 by Brent Roose.
PHP 버전 통계 : 2022년 7월 by Brent Roose.
5 Pitfalls of Upgrade to Native PHP Enums and How to Avoid Them by Tomas Votruba.
네이티브 PHP 열거형으로 업그레이드할 때의 5가지 함정과 이를 피하는 방법 by Tomas Votruba
On the use of enums by Larry Garfield – When should you use PHP enums, and when shouldn’t you?
Larry Garfield의 enum 사용에 대해 – PHP enum을 언제 사용해야 하고 언제 사용하지 않아야 합니까?
Effective immutability with PHPStan by Matthias Noback – DateTimeImmutable is actually mutable.
Matthias Noback의 PHPStan을 사용한 효과적인 불변성 DateTimeImmutable
은 실제로 변경 가능합니다.
$dt = new DateTimeImmutable('now'); |
위와 같이 실제로 변경 가능하기 때문에, 진짜로 변경 가능하지 않도록 하려면 더 많은 노력이 듭니다.
그런데 대체 누가 __construct() 호출하나요?
그냥 마음 편하게 빌드 과정에서 PHPStan으로 잘 감시합시다…라고 하는 글입니다.
Benchmarking serialization by Larry Garfield.
Larry Garfield의 직렬화 벤치마킹.
Decoupling your security user from your user model by Matthias Noback.
Matthias Noback의 사용자 모델에서 보안 사용자 분리
Complete guide for PHP & Neo4j and using graph databases by Michal Štefaňák.
Michal Štefaňák의 PHP 및 Neo4j에 대한 완벽 가이드.
How to automatically add return type declarations with Rector and without breaking your code.
코드를 손상시키지 않고 Rector를 사용하여 반환 유형 선언을 자동으로 추가하는 방법.
PHP-FPM tuning: Using ‘pm static’ for max performance by Hayden James.
Hayden James의 PHP-FPM 튜닝: 최대 성능을 위해 ‘pm static’ 사용.
How can I trust my test suite? by Antonello D’Ippolito.
안토넬로 디폴리토의 내 테스트 스위트를 어떻게 신뢰할 수 있습니까?.
오디오/비디오
- 🎬 Brent Roose의 PHP 객체의 진화: PHP 5.6에서 PHP 8.2까지.
- 🎬 Brent Roose의 null 문제.
- 🔈 무료 The Geek 팟캐스트 에피소드 38 – Steve McDougall과 함께. 이 에피소드에서는 그가 스트리밍을 시작한 방법, 그가 Slim PHP 대신 Laravel을 사용하게 된 동기, 오픈 소스에 기여하는 것이 어떤 것인지 등을 다룹니다.
- 🎬 PHP 라운드테이블 85: PHP 사용자 그룹 현황.
- 🎬 로드 러너 비디오 자습서.
- 🎬 Docker 및 PhpStorm으로 Xdebug 3를 설치하는 방법.
Community
Philip Sharp가 편집한 ElePHPants에 대한 현장 가이드. 57종의 코끼리가 있다는 사실, 알고 계셨나요?
PUFA – wordle과 비슷하지만 PHP 기능과 키워드를 추측하기 위한 것입니다.
Frédéric Bouchery(@FredBouchery)의 트윗
I just came back from the future, this is what I read on a tombstone
#PHP #PhpNotDead
오늘은 여기까지입니다. 읽어주셔서 감사합니다!