PHP Annotated – February 2023

PHP Annotated 이미지

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.16PHP 8.2.3이 릴리스되었습니다.

❗️ 이들은 CVE-2023-0568, CVE-2023-0567, CVE-2023-0662 에 대한 수정이 포함된 보안 업데이트입니다.

당분간은 여전히 PHP 7.4를 사용하는 경우 Remi의 리포지토리에 백포트된 보안 수정 사항이 포함된 업데이트가 있습니다. 그러나 이 리포지토리는 Remi가 얼마나 많은 여유 시간을 제공할 수 있는지에 따라 달라지는 최선의 노력 프로젝트임을 명심하세요. 즉, 사용자에게 마이그레이션할 시간을 더 주기 위한 것이므로 향후 업데이트에 대한 보장은 없습니다.

Laravel v10 has been released

Laravel v10이 출시되었습니다.

다음은 이 업데이트에 대해 자세히 알아보는 데 도움이 되는 몇 가지 리소스입니다:

팀에서 발표한 주요 변경 사항 중 하나는 전체 Laravel 패키지 세트에 유형 선언을 추가한 것입니다.
이로 인해 컨트롤러 스텁(stub)에서 사용자에게 문제가 발생했습니다. 그리고 얼마 후 Laravel 팀은 유형 선언을 모두 제거하기로 결정했습니다.

Martin Joo(@mmartin_joo)의 트윗

All the drama about the Controller return types🚀🎉😀

트윗 이미지

Taylor Otwell(@taylorotwell)의 트윗

컨트롤러 스텁에서 반환 유형을 제거하기로 결정했습니다. 👍
원한다면 추가하세요. ✅

PHPUnit 10 is out

PHPUnit 10이 출시되었습니다.

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

RFC: 비대칭 가시성

Ilija Tovilo와 Larry Garfield는 필요한 피드백을 받아 이 RFC의 수정 버전을 발표할 예정이지만, 지금은 프로퍼티에 대한 후크와 접근자를 추가하는 제안에 집중할 것입니다.

✅ RFC: Readonly amendments #PHP 8.3

RFC: Readonly 수정 사항 #PHP 8.3

class Foo {    
public function __construct(
public readonly DateTime $bar,
) {}

public function __clone()
{
$this->bar = clone $this->bar; // This produces a Fatal error in PHP <8.2
// and will work in PHP 8.3+
}
}

$foo = new Foo(new DateTime());
$foo2 = clone $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

RFC: 매직 접근자에 범위 전달 #PHP 8.3

Nicolas Grekas와 Ilija Tovilo가 호출 범위를 매직 접근자에게 전달하는 것을 제안했습니다.

논의 과정에서 커뮤니티 회원들은 범위를 올바르게 반환하는 별도의 함수를 추가할 것을 제안했고, RFC 작성자는 이 아이디어로 방향을 전환할 수 있습니다.

📊 RFC: Typed class constants #PHP 8.3

RFC: 타입 클래스 상수 #PHP 8.3

Benas Seliuginas와 Máté Kocsis는 클래스 및 인터페이스의 콘텐츠에 대한 타입 선언을 허용할 것을 제안합니다.
다음은 이 문제와 타입 상수가 어떻게 도움이 되는지 보여주는 몇 가지 예제 코드입니다:

interface I {
const TEST = "Test"; // We may naively assume that I::TEST is a string.
}

class Foo implements I {
const TEST = []; // But it may be an array...
}

class Bar extends Foo {
const TEST = null; // Or null
}

📣 RFC: Working With Substrings #PHP 8.3

RFC: 서브스트링으로 작업하기 #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

명령줄 실행기 plugin

터미널 명령을 실행하고 관리하는 데 도움이 되는 PhpStorm 플러그인입니다. 이 플러그인을 사용하여 서버, Docker를 시작하거나 원격 서버에서 명령을 실행할 수도 있습니다.

Command Line Launcher plugin 스크린샷


Tools


Symfony


Laravel


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).

레거시 PHP 애플리케이션의 수명을 연장하는 방법.

Hakana: Taking Hack Seriously by Matt Brown from Slack, and author of Psalm.

Hakana: Hack을 진지하게 받아들이기

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:

PHPLift – Compatibility Guide

PHPLift - 호환성 가이드

Anna Filina(@afilina)의 트윗

제가 한동안 작업해 온 프로젝트를 발표합니다: PHPLift입니다.

앱의 PHP 버전을 업그레이드하는 데 도움이 되는 가이드입니다. 현재 진행 중인 작업이므로 정기적으로 콘텐츠를 추가할 예정입니다. 누군가에게 도움이 되길 바랍니다. 즐거운 업그레이드 되세요!

https://phplift.com

azjezz/typed

azjezz/typed

Sergii Shymko(@SergiiShymko)의 트윗

와우! PHP에서 로컬 변수를 강력하게 입력할 수 있습니다! 이 변수는 아래에 생성된 익명 클래스의 유형화된 속성을 참조합니다.
https://3v4l.org/T6GFS

심지어 모든 기본 유형에 대한 선언이 포함된 Composer 패키지도 있습니다.

<?php
declare(strict_types=1);

function &declare_int(int $value) {
static $references = [];

$valueWrapper = new class(value) {
public function __construct(public int $value) {
}
};
$references[] = $valueWrapper;

return $valueWrapper->value;
}

$intVariable = &declare_int(0);

$intVariable = 42; // works
$intVariable = 'test'; // fails

Video


Conferences

오프라인 이벤트가 한창 진행 중입니다. 방문하고 발표를 신청해 볼 만한 대형 PHP 행사를 확인해 보세요:

다음 PHP 밋업이 언제인지 궁금하다면 Tomas Votruba의 멋진 밋업 애그리게이터 friendsofphp.org에서 확인할 수 있습니다. php.net 이벤트에도 캘린더가 있습니다: 2023년 3월.