PHP Annotated – April 2023

PHP Annotated 이미지

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


For convenience, sequences may also be applied using the sequence method, which simply invokes the state method internally. The sequence method accepts a closure or arrays of sequenced attributes:
번역:

여러분 안녕하세요!

엄선된 뉴스, 기사, 도구, 동영상 등 지난 한 달간 PHP 세계에서 일어난 가장 흥미로운 일들을 살펴보는 PHP Annotated 4월호에 오신 것을 환영합니다.

News

PHP 8.1.18 and PHP 8.2.5 released.

PHP 8.1.18PHP 8.2.5가 릴리스 되었습니다.

🐛 버그 수정 릴리스입니다.

Pest 2.0 released

Pest 2.0 출시.

Pest v2는 테스트 재시도, 느린 테스트 프로파일링, 새로운 arch 플러그인 지원 등 많은 새로운 기능을 제공합니다.

Bref 2.0 released

Bref 2.0 출시

Bref를 사용하면 AWS Lambda 서버리스 플랫폼에 PHP 앱을 쉽게 배포할 수 있습니다.

이번 주요 업데이트에서는 PHP 설정을 위한 더 간단한 구성, 개선된 Laravel 통합, 더 빠른 배포, 런타임 시 환경 변수의 시크릿 자동 로드, 로컬 개발을 위한 더 간소화된 docker-compose.yml이 제공됩니다.

서버리스 PHP 뉴스레터를 구독하여 해당 주제에 대한 더 많은 콘텐츠를 확인하세요.

PER Coding Style 2.0 released

PER 코딩 스타일 2.0 출시

새 버전의 PHP 코딩 스타일 가이드라인은 몇 가지 문제를 수정하고 최근 추가된 PHP 구문에 대한 가이드를 업데이트합니다.

PER CS 2.0이 PSR-12와 어떻게 다른지 확인하려면 여기를 클릭하세요.

PhpStorm 2023.1 released

PhpStorm 2023.1 출시

이번 업데이트는 올해 PhpStorm의 첫 번째 주요 업데이트입니다. 3v4l.org와의 통합, 향상된 성능, 새로운 UI 개선 사항, PHP용 DFA 디버거 등 다양한 기능이 제공됩니다.

PHP Foundation Update, March 2023

PHP 재단 업데이트, 2023년 3월

PHP 재단 팀은 GitHub 스폰서를 통한 PHP 지원 가능성을 발표하고 새로운 자문위원회 이니셔티브를 공개했습니다.

PHP 8.3 release managers announced

PHP 8.3 릴리즈 매니저 발표

전통에 따라 PHP 8.3에는 두 명의 신인 릴리즈 매니저가 있습니다: PHP 재단이 후원하는 PHP 핵심 개발자 Jakub ZelenkaEric Mann입니다. 이들은 베테랑 RM Pierrick Charron의 도움을 받게 됩니다.

PHP Core

대부분의 핵심 소식은 PHP 재단에서 제공하는 PHP 코어 라운드업 시리즈에서 자세히 다루고 있으므로 몇 가지 주요 내용만 나열하겠습니다:

✅ RFC: Arbitrary static variable initializers

RFC: 임의의 정적 변수 이니셜라이저

PHP는 모든 함수 내에서 정적 변수를 선언할 수 있습니다. 정적 변수의 값은 함수 호출보다 오래 지속되며 향후 함수 실행 시에도 공유됩니다.

PHP 8.3에서는 다른 함수의 결과와 같은 모든 표현식을 할당할 수 있습니다.

function bar() {    
echo "bar() called\n";
return 1;
}

function foo() {
static $i = bar(); // This currently produces a fatal error, but will work in PHP 8.3
echo $i++, "\n";
}

foo();
// bar() called
// 1
foo();
// 2
foo();
// 3

부작용으로, PHP 8.3에서는 정적 변수를 다시 선언하는 것이 금지됩니다. 이렇게 하면 아마도 실제 코드에서 볼 수 없었을 PHP의 몇 가지 단점이 수정됩니다:

<?php
function f()
{
static $x = 1;

return $x;

static $x = 2;
}
echo f();

두 번째 정적 선언에 연결할 수 없을 것이라고 예상했다면 안타깝게도 착각입니다:
PHP 8.3 이전 버전에서의 결과: https://3v4l.org/HhpYj

Output for 8.0.1 - 8.0.28, 8.1.0 - 8.1.18, 8.2.0 - 8.2.5
2

📣 RFC: Clone with

RFC: Clone with

Máté Kocsis는 클론 연산자를 확장하여 “clone with”라는 새로운 언어 구조에 대한 지원을 추가하여 더 적은 코드로 모든 종류의 인스턴스 속성(declared/dynamic, typed/untyped, readonly/non-readonly)에 대한 “wither” 메서드를 작성할 수 있도록 할 것을 제안했습니다.

example:

class Response implements ResponseInterface {    
public readonly int $statusCode;
public readonly string $reasonPhrase;
// ...
public function withStatus($code, $reasonPhrase = ''): Response
{
return clone $this with {
statusCode: $code,
reasonPhrase: $reasonPhrase
};
}
// ...
}

$response = new Response(200);
$response->withStatus(201)->withStatus(202);

📣 RFC: New core autoloading mechanism with support for function autoloading

RFC: 새로운 코어 자동 로딩 메커니즘과 함수 자동 로딩 지원

George Peter Banyard와 Dan Ackroyd는 더 나은 설계의 클래스 자동 로딩 메커니즘과 새로운 함수 자동 로딩 메커니즘을 제안합니다.

📣 Jakub Zelenka proposes to form PHP Technical Committee

Jakub Zelenka는 PHP 기술 위원회를 구성하는 것을 제안합니다.

PHP는 RFC 투표를 사용하여 사용자가 볼 수 있는 언어 변경을 결정하는데, 이는 몇 가지 알려진 문제에도 불구하고 잘 작동합니다. 그러나 PHP 내부 및 확장 API에 영향을 미치는 기술적 변경에는 효과적이지 않으며, 기술적 기반에 대한 기여자 간의 갈등이 쉽게 해결되지 않습니다.
제안된 위원회는 선출된 5명의 위원으로 구성되며, 변경에 대한 분쟁이나 질문이 발생할 경우 위원회에 해결을 요청할 수 있습니다.

Tools

  • crazywhalecc/static-php-cli - PHP 앱을 추가 의존성 없이 단일 바이너리 파일로 빌드하는 도구입니다.

  • aschmelyun/subvert - 비디오에서 초 단위로 자막, 요약 및 챕터를 생성합니다.

  • yiisoft/db - 다양한 유형의 데이터베이스(MariaDB, MSSQL, MySQL, Oracle, PostgreSQL, SQLite)에 대한 프레임워크에 구애받지 않은 쿼리 빌더입니다.

  • Crell/EnvMapper - 정의된 클래스 객체에 환경 변수를 쉽게 매핑하여 의존성 주입을 위해 준비합니다.

  • PHP Skeleton for Bison by Anton Sukhachev.
    PHP와 많은 다른 언어의 구문은 Bison 형식의 문법으로 설명됩니다. mrsuh/php-bison-skeleton을 사용하면 third-party 의존없이 PHP에서 Bison 파서를 생성할 수 있습니다.

  • 🚧 NativePHP
    Marcel Pociot는 Electron 또는 Tauri 위에 Laravel/PHP 앱을 데스크톱에서 실행하는 도구를 개발하고 있습니다.

Symfony

Laravel

  • Laravel Valet 4.0 released
    이름과 달리 Laravel Valet은 모든 PHP 프로젝트에 사용할 수 있는 최소한의 macOS용 개발 환경입니다.

    이번 릴리즈는 대부분 내부를 다시 작성하는 데 중점을 두었기 때문에 디버그, 수정 및 수정이 더 쉬워졌습니다. 또한 새로운 valet status 명령이 추가되었으며 공유 옵션으로 Expose 기능을 지원합니다.

  • Laravel IDEA 7.0
    인기있는 플러그인 PhpStorm에 대한 주요 업데이트가 있었습니다. “새로운 Eloquent 모델” UI와 Twig 템플릿 지원이 포함되어 있습니다. Laravel Daily에서 이 비디오 데모를 확인하십시오.

  • Marcel Pociot의 새로운 OpenAI Chat API를 사용하여 ChatGPT 클론을 만드는 방법.

  • Christoph Rumpel의 Laravel 애플리케이션에서 테스트할 수 있는 모든 것.
    실제 응용 프로그램에서 테스트해야 할 시나리오의 예제가 포함된 훌륭한 가이드입니다.

  • TomasVotruba/bladestan – Blade 템플릿을 위한 PHPStan 분석.

  • lunarphp/lunar – 오픈 소스 헤드리스 e-커머스 패키지로 Laravel에 사용할 수 있습니다. 자체 스토어 프런트를 만들 수 있지만 백엔드 작업은 이미 완성되어 있었습니다.

  • area17/twill - 직관적이고 강력하며 유연한 사용자 지정 관리 콘솔을 빠르게 생성하는 데 도움이 되는 Laravel용 CMS 툴킷입니다.

  • 📺 Laravel Weekly Update #6 – 이제 팀에서 매주 라라벨 뉴스와 업데이트를 짧은 동영상으로 정리하여 제공합니다.

기타

  • Announcing WCGI: WebAssembly + CGI – Wasmer의 사람들이 기존 CGI 애플리케이션을 WASI로 컴파일하여 재사용할 수 있는 새로운 기술을 발표합니다. 이를 통해 비즈니스 로직과 정적 asset만 포함하고 HTTP 스택이나 부피가 큰 Docker 컨테이너가 없는 초소형 패키지를 출시할 수 있습니다.

  • PHP에서 한 줄 코드를 피하기 by Andreas Möller. 코드를 이해하고 디버깅하기 쉽게 만들어 줍니다.
    break point를 정확히 원하는 곳에 사용해 디버깅할 수 있고, 코드 커버리지를 정확히 측정하면서, 가독성을 높일 수 있다고 주장합니다.

  • Secure Your PHP Code With Taint Analysis by Qodana by Valerie Kuzmina.
    JetBrains의 코드 품질 플랫폼인 Qodana의 손상 분석(Taint Analysis)으로 PHP 코드 보호
    오염의 예

    • 오염의 예. GET 매개변수의 임의 데이터가 화면에 표시됩니다. 예를 들어 악의적인 사용자는 이 취약점을 악용하여 프로그램 레이아웃을 변경할 수 있습니다.
      PhpStorm에서 issue 열기
  • Discovering PHP’s first-class callable syntax by Freek Van der Herten.
    PHP의 first-class callable 구문 알아보기

  • Blazingly Fast Markdown Parsing in PHP using FFI and Rust by Ryan Chandler.
    PHP의 FFI와 Rust를 사용한 놀랍도록 빠른 마크다운 파싱

  • Cloning readonly properties in PHP 8.3 by Brent Roose.
    PHP 8.3에서 읽기 전용 프로퍼티 복제하기

  • Using PSR-3 placeholders properly by Larry Garfield.
    PSR-3 플레이스홀더 올바르게 사용하기

  • Extending PHP 8.1 enums with attributes by Rob Fonseca.
    Attribute로 PHP 8.1 열거형(enum) 확장하기. 간단하지만 깔끔한 어트리뷰트 사용법.

Community

  • 여러분이 놓쳤을 수도 있는데, Brent와 Roman이 이제 PHP Annotated의 비디오 버전을 제작하고 있습니다. 최신 소식을 확인하고 PHP Annotated YouTube 채널 구독도 잊지 마세요.

  • PoPHPularity: Is it decreasing and what to do about it? by Christian Olear.
    PoPHPularity: PHP의 인기는 줄어들고 있고, 이에 대해 어떻게 대처해야 할까?

  • Modern PHP by Dimitrios Lytras
    “내가 신경을 쓰지 않은 동안, PHP가 꽤 좋아졌다.”

    • Array destructuring (v7.1)
    • Spread operator within arrays (v7.4) & (v8.1)
    • Match expressions (v8.0)
    • Enumerations (enums) (v8.1)
    • Arrow functions (v7.4)
    • Named parameters (v8.0)
    • Null coalescing operator (v7.0)
    • Null coalescing assignment operator (v7.4)
    • Null-safe operator (v8.0)
    • Spaceship operator (v7.0)
    • Multi catch exception handling (v7.1)
    • str_starts_with, str_ends_with, str_contains (v8.0)
    • Return Types (v7.0)
    • Union types (v8.0)
    • Null and Void return types (v7.1)
    • Never return type (v8.1)
    • Grouped imports (v7.0)
    • Constructor property promotion (v8.0)
    • WeakMaps (v8.0)
  • “그 차는 PHP 전도사 역할을 톡톡히 해왔습니다.”

Conferences

참가하고 신청할 가치가 있는 다가오는 PHP 모임을 확인하십시오.