1. 1. News
    1. 1.1. PHP 8.2 Beta 3 has been released
    2. 1.2. PHP 8.0.22 and PHP 8.1.9 have been released
    3. 1.3. PHP Foundation Update, July 2022
    4. 1.4. Composer 2.4 is out
    5. 1.5. deployphp/deployer 7.0.0 is out
    6. 1.6. Codeception/Codeception 5.0.0 is out
    7. 1.7. swoole/swoole-src 5.0.0 is out
    8. 1.8. PhpStorm 2022.2 released
  2. 2. PHP Core
    1. 2.1. RFC: Asymmetric Visibility #PHP 8.3
  3. 3. Tools
    1. 3.1. serversideup/docker-php
    2. 3.2. Crell/Serde
    3. 3.3. statix-php/server
    4. 3.4. aimeos/map
    5. 3.5. hotmeteor/spectator
    6. 3.6. DaveLiddament/sarb
    7. 3.7. leafsphp/leaf
    8. 3.8. pheature-flags/pheature-flags
    9. 3.9. gakowalski/alternative-interpreters
  4. 4. Symfony
    1. 4.1. symfony/clock
    2. 4.2. 8 News in Config Transformer that Converts Symfony YML to PHP by Tomas Votruba.
    3. 4.3. Repository pattern the SOLID way in Symfony by Saeid Raei.
    4. 4.4. How to apply Hexagonal/Clean/Onion architecture with only two changes to your symfony project by Saeid Raei.
    5. 4.5. Symfony Testing: using Repository pattern without connecting to database by Saeid Raei.
    6. 4.6. Voila! Symfony and PHP 8.1 by Mert Simsek.
    7. 4.7. Decorating Commands by Michael Zangerle.
    8. 4.8. Clean up your migrations! by Victor Bocharsky.
  5. 5. Laravel
    1. 5.1. 🎬 What’s New In Laravel 9.23.0, Laravel 9.24.0, Laravel 9.25.0
    2. 5.2. protonemedia/laravel-splade
    3. 5.3. Sairahcaz/laravel-xhprof
    4. 5.4. BinarCode/laravel-restify
    5. 5.5. Increase performance by using Eloquent’s setRelation method by Freek Van der Herten.
    6. 5.6. How I develop applications with Laravel by Steve (King) McDougall.
    7. 5.7. Scaling Laravel to 100M+ jobs and 30,000 requests/sec by Mateus Guimarães.
    8. 5.8. How to Safely and Efficiently Upgrade an Out-of-Date Laravel App by Jamison Valenta
    9. 5.9. Challenges when lift-and-shifting Laravel apps into AWS Lambda by Marco Deleu.
    10. 5.10. 🎬 5-hour Laravel 9 tutorial for beginners.
  6. 6. 기타
    1. 6.1. Serverless PHP Applications on Digital Ocean Functions by Ayesh Karunaratne.
    2. 6.2. Narrowing types for static analysis by Jordi Boggiano
    3. 6.3. The PHP Handbook – Learn PHP for Beginners by Flavio Copes.
    4. 6.4. The difference between Traits, Interfaces, and Abstract Classes in PHP by Andrew Schmelyun.
    5. 6.5. When to use a trait? by Matthias Noback.
    6. 6.6. Stop using “static” in PHP and Stop using “extends” in PHP by Mike Zukowsky.
    7. 6.7. The 100 PHP functions in 2022 by Damien Seguy.
    8. 6.8. PHP native Attributes quick reference by Damien Seguy – How many core attributes can you name?
    9. 6.9. Simple Solutions 1 – Active Record versus Data Mapper by Matthias Noback.
    10. 6.10. 3 years of lift-and-shift into AWS Lambda by Marco Aurélio Deleu
    11. 6.11. Do generators really reduce the memory usage?
    12. 6.12. What I would change about PHP by Brent Roose.
  7. 7. Audio/Video
    1. 7.1. 🎬 Why you need to update PHP by Brent Roose.
    2. 7.2. 🎬 PHP 101 for Absolute Beginners – A full 2-hour course.
  8. 8. Conferences
  9. 9. Community
    1. 9.1. A nomenclature of hate by Jordi Boggiano.
    2. 9.2. swyx(@swyx)의 트윗
    3. 9.3. asgrim/side-effect

PHP Annotated – August 2022

PHP Annotated 이미지

Roman Pronskiy가 쓰고 JetBrains에서 제공하는 PHP Annotated 2022년 8월의 번역/해석본입니다.

이 중에서 몇 가지 제 취향껏 골라 그 안의 내용도 좀 뒤져보고 개발새발 번역해서 소개합니다.


안녕하세요!

PHP Annotated 8월호에 오신 것을 환영합니다. 여기에서 선별된 뉴스, 기사, 도구 및 비디오를 포함하여 지난 한 달 동안 PHP 세계에서 일어난 가장 흥미로운 일을 따라잡을 것입니다.

News

PHP 8.2 Beta 3 has been released

PHP 8.2 베타 3가 출시되었습니다.

최종 베타가 예정대로 출시되었습니다. 다음 릴리스는 PHP 8.2.0 RC 1이며 9월 1일에 릴리스될 예정입니다.

PHP 8.2에서 더 이상 사용되지 않는 동적 속성(property)을 처리하는 방법을 확인하십시오 .

PHP 8.2에 추가될 기능에 대한 자세한 목록은 PHP.Watch 또는 stitcher.io를 참조하십시오 .

또한 플래시 뉴스레터인 The Road to PHP 8.2를 확인하십시오 .

PHP 8.0.22 and PHP 8.1.9 have been released

PHP 8.0.22PHP 8.1.9가 릴리스되었습니다.

🪲현재 지원되는 브랜치에 대한 버그 수정 릴리스입니다.

PHP Foundation Update, July 2022

PHP 재단 업데이트, 2022년 7월

후원자를 위한 월간 업데이트를 확인하십시오.

Composer 2.4 is out

Composer 2.4가 출시 되었습니다.

종속성의 보안 상태를 추적(audit), bash 자동 완성 및 여러 작은 변경 사항이 추가됐습니다.

두 가지 새로운 명령에 대해 자세히 알아보세요: auditbump.

deployphp/deployer 7.0.0 is out

deployphp/deployer 7.0.0이 출시되었습니다.

Deployer는 널리 사용되는 프레임워크를 지원하는 PHP로 작성된 배포 도구입니다.

v.7의 가장 큰 변화 중 하나는 새로운 공급 레시피입니다. 프로비저닝 레시피는 PHP 애플리케이션을 실행하기 위한 모든 VPS를 자동으로 설치하고 구성할 수 있습니다. 웹 서버, SSL, PHP, Redis, 노드 등을 설치합니다.

Codeception/Codeception 5.0.0 is out

Codeception/Codeception 5.0.0이 출시되었습니다.

Attribute, PHP 8 지원, 샤딩 및 기타 기능이 추가되었습니다!

swoole/swoole-src 5.0.0 is out

swoole/swoole-src 5.0.0이 출시되었습니다.

동시성 확장의 새 버전은 향상된 타입 시스템, 모든 함수의 매개변수 및 반환 값에 대한 타입 추가, 최적화된 오류 처리 및 기타 개선 사항 및 추가 사항과 함께 제공됩니다.

PhpStorm 2022.2 released

PhpStorm 2022.2 출시

이 주요 업데이트는 Mockery 및 Rector 지원, 제네릭 및 열거형 지원 강화, 디버거 및 HTTP 클라이언트 개선 등을 제공합니다.

🎬 PhpStorm 2022.2의 새로운 기능에 대한 비디오 개요를 시청 하세요.

그리고 막 PhpStorm 2022.3 로드맵이 게시했습니다.

  • PHP 8.2
  • Code Vision for PHP
  • Quick-fix preview
  • ParaTest support

PHP Core

Core 뉴스의 대부분은 PHP Foundation의 PHP Core Roundup 시리즈에서 자세히 다룹니다 . 이 시리즈의 다섯 번째 에피소드가 곧 출시될 예정이므로 간략하게만 언급하겠습니다.

RFC: Asymmetric Visibility #PHP 8.3

https://wiki.php.net/rfc/asymmetric-visibility

이전에 Nikita Popov는 C#과 같은 속성(property) 접근자 구현을 제안했습니다. 그 RFC는 토론 단계를 통과하지 못했습니다. 대신 읽기 전용 속성이 승인되었습니다.

이번에 Ilija Tovilo와 Larry Garfield는 속성이 읽기 및 쓰기 작업에 대해 별도의(“비대칭”) 가시성을 가질 수 있도록 Swift와 유사한 구문을 추가할 것을 제안합니다.

1
2
3
class Foo{
public private(set) string $bar,
}

Larry의 몇 가지 메모:

  • 읽기 전용 속성의 복제 가능성 문제를 해결합니다.
  • 읽기 전용 속성의 상속 문제을 수정합니다. 지금은 readonly는 private 범위에서만 설정할 수 있고 protected 범위에서는 설정할 수 없습니다.
  • 다른 속성으로부터 재생성된 속성에 유용할 것입니다. 예를 들어, $o->setFirstName() 혹은 $o->setLastName()이 호출될 때마다 내부적으로 업데이트되는 public private(set) $fullName. 이는 향후 로드맵에 있는 접근자 hook에 적용될 수 있습니다.

Tools

serversideup/docker-php

serversideup/docker-php – PHP용 프로덕션에 바로 사용 가능한 도커 이미지. Laravel, WordPress 등에 최적화되었습니다.

Crell/Serde

Crell/Serde – PHP 8용 강력한 Serde(직렬화/역직렬화) 라이브러리입니다. 자세한 내용은 Larry Garfield의 소개 게시물을 참조 하세요.

statix-php/server

statix-php/server – PHP의 내장 서버를 둘러싼 객체 지향 래퍼입니다.

aimeos/map

aimeos/map – PHP 배열 및 컬렉션이 쉬워졌습니다. 또 다른 Laravel과 유사한 컬렉션 패키지이지만 종속성이 없습니다.

hotmeteor/spectator

hotmeteor/spectator – PHP용 OpenAPI 테스트.

DaveLiddament/sarb

DaveLiddament/sarb – 이 도구는 PHP 정적 분석기에 대한 기준점(baseline) 기능을 제공합니다(기준점 이후에 발생한 문제만 리포트).
v1.5.0에서는 –clean-up옵션을 제공합니다. 여기에는 코드 품질을 점진적으로 개선하기 위해 수정해야 할 5가지 임의 문제가 나열되어 있습니다.

leafsphp/leaf

leafsphp/leaf – 웹 앱과 API를 빠르게 생성하기 위한 간단하지만 강력한 마이크로 프레임워크입니다.

pheature-flags/pheature-flags

pheature-flags/pheature-flags – 제어된 조건에서 특정 기능을 활성화 및 비활성화할 수 있는 릴리스 관리 시스템입니다.

gakowalski/alternative-interpreters

gakowalski/alternative-interpreters – 대체 PHP 인터프리터, 컴파일러 및 트랜스파일러 목록입니다.

Symfony

symfony/clock

symfony/clock은 시스템 시계(clock)에서 응용 프로그램을 분리하는 새로운 컴포넌트입니다.

그것의 릴리스는 프레임워크 제국주의(무료로 어떤 것을 취한 다음 자기 것이라고 우기는 현상)에 대해 Symfony를 비난하는 짧은 트윗 폭풍을 일으켰습니다.

Frank de Jonge(@frankdejonge)의 트윗

솔직히, @symfony 가 커뮤니티 패키지를 수용하는 대신 시계를 만드는 것은 나를 슬프게 만듭니다. 그들은 NIH 증후군으로 계속 고통 받고 있습니다. 말 그대로 3(?) 시계 패키지와 동일한 인터페이스입니다. Symfony는 아마도 그들의 인기가 떨어지게 할 것입니다.

참고 : NIH 증후군(Not invented here syndrome)은 말 그대로 ‘여기서 개발한 것이 아니다.’(Not invented here)라는 의미로, 제3자가 개발한 기술이나 연구 성과는 인정하지 않는 배타적 조직 문화 또는 그러한 태도를 말한다. - 위키백과

taylor otwell(@taylorotwell)의 트윗

Symfony가 왜 그렇게 하는지 전혀 읽지 않았지만 난 여기에 돈을 걸 것입니다. 1) 그건 사소합니다. 2) They don’t want to have to bug an outside rando with a day job and 1,000 other concerns to update PHP versions, fix bugs, etc. anytime something comes up.(역자 주: 해석 포기)

Nicolas Grekas(@nicolasgrekas)의 트윗

  • Nicolas는 Symfony OSS core contributor입니다.

Package Principles는 읽을 가치가 있을 것입니다. 예를 들어 Stable-Dependencies Principle이 새로운 #Symfony Clock 구성 요소에 대한 논의에 한 눈에 적용해볼 수 있습니다.

Package Principles에서 이야기 하는 Stable-Dependencies Principle

  • 디자인은 사용되는 환경의 특성에 따라 변화하고 있습니다. 따라서 패키지 디자인도 변화를 지원해야 합니다. SDP는 휘발성을 원하는 패키지가 변경하기 어려운 패키지에 의존해서는 안 된다고 명시하고 있습니다.

8 News in Config Transformer that Converts Symfony YML to PHP by Tomas Votruba.

Symfony YML을 PHP 로 변환하는 Config Transformer의 8가지 소식 by Tomas Votruba

Repository pattern the SOLID way in Symfony by Saeid Raei.

Symfony에서 SOLID하게 리포지토리 패턴 구현하는 법 by Saeid Raei.

How to apply Hexagonal/Clean/Onion architecture with only two changes to your symfony project by Saeid Raei.

symfony 프로젝트에 단 두 가지 변경 사항으로 Hexagonal/Clean/Onion 아키텍처를 적용하는 방법 by Saeid Raei.

Symfony Testing: using Repository pattern without connecting to database by Saeid Raei.

Symfony 테스트: 데이터베이스에 연결하지 않고 Repository 패턴을 사용 by Saeid Raei.

Voila! Symfony and PHP 8.1 by Mert Simsek.

짜잔! Symfony와 PHP 8.1 by Mert Simsek.

Decorating Commands by Michael Zangerle.

Decorating Commands by Michael Zangerle.

두 가지 목적에 따라 다르게 동작하길 바라는 Command를 데코레이터 패턴으로 변경.

Clean up your migrations! by Victor Bocharsky.

마이그레이션을 정리하십시오! by Victor Bocharsky.

Laravel

🎬 What’s New In Laravel 9.23.0, Laravel 9.24.0, Laravel 9.25.0

🎬 Laravel 9.23.0, Laravel 9.24.0, Laravel 9.25.0의 새로운 기능 - Christoph Rumpel이 Laravel 업데이트에 대한 간략한 개요를 제공하는 이 새로운 YouTube 시리즈를 확인하세요.

protonemedia/laravel-splade

protonemedia/laravel-spade – Blade의 단순성과 Inertia.js의 마법.

SPA를 쉽게 구축할 수 있게 도와줍니다.

Sairahcaz/laravel-xhprof

Sairahcaz/laravel-xhprof – Laravel 애플리케이션을 프로파일링하기 위한 간편한 XHProf 설정.

BinarCode/laravel-restify

BinarCode/laravel-restify – 강력한 JSON:API 호환 Rest API를 Laravel과 함께 만드는 가장 빠른 방법입니다.

Increase performance by using Eloquent’s setRelation method by Freek Van der Herten.

Eloquent의 setRelation 메소드를 사용하여 성능을 높이십시오 by Freek Van der Herten.

How I develop applications with Laravel by Steve (King) McDougall.

Laravel로 애플리케이션을 개발하는 방법 by Steve (King) McDougall.

Scaling Laravel to 100M+ jobs and 30,000 requests/sec by Mateus Guimarães.

Laravel을 1억 개 이상의 작업과 초당 30,000개의 요청으로 확장합니다 by Mateus Guimarães.

How to Safely and Efficiently Upgrade an Out-of-Date Laravel App by Jamison Valenta

오래된 Laravel 앱을 안전하고 효율적으로 업그레이드하는 방법 by Jamison Valenta

Challenges when lift-and-shifting Laravel apps into AWS Lambda by Marco Deleu.

Laravel 앱을 AWS Lambda로 리프트 앤 시프팅할 때의 문제 by Marco Deleu.

🎬 5-hour Laravel 9 tutorial for beginners.

🎬 초보자를 위한 5시간짜리 Laravel 9 튜토리얼.

기타

Serverless PHP Applications on Digital Ocean Functions by Ayesh Karunaratne.

Digital Ocean Functions에서의 서버리스 PHP 애플리케이션 by Ayesh Karunaratne.

Narrowing types for static analysis by Jordi Boggiano

Jordi Boggiano의 정적 분석 을 위한 타입 좁히기 – Composer를 비롯한 몇 가지 오래된 코드베이스를 PHPStan의 레벨 8로 이동하는 과정에서 Jordi가 배운 몇 가지 교훈.

The PHP Handbook – Learn PHP for Beginners by Flavio Copes.

PHP 핸드북 – Flavio Copes의 초심자를 위한 PHP 배우기.

The difference between Traits, Interfaces, and Abstract Classes in PHP by Andrew Schmelyun.

Andrew Schmelyun의 PHP에서 Trait, 인터페이스 및 추상 클래스의 차이점.

When to use a trait? by Matthias Noback.

Trait는 언제 사용합니까? by Matthias Noback.

Stop using “static” in PHP and Stop using “extends” in PHP by Mike Zukowsky.

Mike Zukowsky의 PHP에서 “static”을 사용하지 맙시다PHP에서 “extends”를 사용하지 맙시다.

The 100 PHP functions in 2022 by Damien Seguy.

Damien Seguy의 2022년 가장 많이 사용되는 PHP 함수 100개.

PHP native Attributes quick reference by Damien Seguy – How many core attributes can you name?

Damien Seguy의 PHP 기본(native) Attribute 빠르게 확인하기 – 여러분은 몇 가지나 이름을 댈 수 있습니까?

Simple Solutions 1 – Active Record versus Data Mapper by Matthias Noback.

간단한 솔루션 1 – Active Record vs Data Mapper by Matthias Noback.

3 years of lift-and-shift into AWS Lambda by Marco Aurélio Deleu

AWS Lambda로 리프트 앤 시프트한 3년 – AWS Lambda를 PHP 호스팅 공급자로 사용할 때 주의해야 할 주의 사항.

(위 Laravel 쪽에서 소개된 글과 동일합니다)

Do generators really reduce the memory usage?

generator가 실제로 메모리 사용량을 줄입니까?

What I would change about PHP by Brent Roose.

Brent Roose의 내가 PHP에서 바꾸고 싶은 것.

Audio/Video

🎬 Why you need to update PHP by Brent Roose.

Brent Roose의 PHP를 업데이트해야 하는 이유.

🎬 PHP 101 for Absolute Beginners – A full 2-hour course.

완전 초보자를 위한 PHP 101 – 전체 2시간 코스.

Conferences

대면 이벤트가 드디어 돌아왔습니다!

Community

A nomenclature of hate by Jordi Boggiano.

Jordi Boggiano의 증오 명명법.

오픈 소스 프로젝트를 유지하는 것은 어렵습니다. 문제를 해결해야 할 뿐만 아니라 좌절한 사용자를 다루어야 하기 때문입니다. Alexander Makarov가 수집한 몇 가지 예를 확인하십시오: samdark/opensource-hate.

swyx(@swyx)의 트윗

https://twitter.com/swyx/status/1552730861052628992

swyx의 트윗 이미지

asgrim/side-effect

asgrim/side-effect - 모든 걸 __toString() 메서드 안에서 처리하는 프레임워크.

James Titcumb(@asgrim)의 트윗

농담인 줄 알았겠지만, 진짜 만들었어

누군가 __toString() 이외의 다른 메서드에 구현되었다며 버그 리포팅해서, 이를 수정하기도 했습니다.