테스트 사이트 - 개발 중인 베타 버전입니다

PHP 8.4의 새로운 기능

· 1년 전 · 1360 · 4

PHP 8.4는 2024년 11월 21일에 출시될 예정입니다. 이 버전은 속성 훅, JIT 개선, 추가 괄호 없이 메서드 체이닝 호출을 지원하는 기능을 포함할 것입니다. 이는 큰 변화입니다!

속성 훅 RFC

현대 PHP 역사상 가장 큰 변화 중 하나는 속성 훅을 정의할 수 있는 능력입니다.


class BookViewModel
{
    public function __construct(
        private array $authors,
    ) {}

    public string $credits {
        get {
            return implode(', ', array_map(
                fn (Author $author) => $author->name,
                $this->authors,
            ));
        }
    }

    public Author $mainAuthor {
        set (Author $mainAuthor) {
            $this->authors[] = $mainAuthor;
            $this->mainAuthor = $mainAuthor;
        }

        get => $this->mainAuthor;
    }
}
    

속성 훅의 목표는 각 속성이 자체의 get 및 set 훅을 정의할 수 있도록 하여 많은 getter 및 setter를 제거하는 것입니다. 훅은 선택 사항이며 특정 속성에 대해 두 개의 훅을 동시에 추가할 필요는 없습니다. 예를 들어, get 훅만 있는 속성은 가상 속성입니다. 이는 현재 PHP 8.4에서 가장 큰 업데이트 중 하나로, 많은 코드를 줄여줄 것입니다 ?


interface HasAuthors
{
    public string $credits { get; }
    public Author $mainAuthor { get; set; }
}
    

괄호 없는 새 인스턴스 체이닝 호출 RFC

속성 훅이 충분하지 않다면, PHP 8.4는 새 인스턴스 호출을 괄호로 감싸지 않고도 메서드 체이닝을 호출할 수 있는 기능을 추가하여 많은 코드를 절약할 수 있습니다. 개인적으로 이 변경이 매우 좋다고 생각합니다. 매번 이렇게 해야 했거든요.


$name = (new ReflectionClass($objectOrClass))->getShortName();
    

이제 (PHP 8.4) 이렇게만 하면 됩니다:


$name = new ReflectionClass($objectOrClass)->getShortName();
    

JIT 변경 RFC

PHP 8.4는 JIT 활성화 방식을 변경했습니다. PHP 8.4 이전에는 opcache.jit_buffer_size를 0으로 설정해야 JIT를 비활성화할 수 있었지만, 이제는 다음과 같이 비활성화할 수 있습니다:


opcache.jit=disable
opcache.jit_buffer_size=64m
    

사용자가 이 변경에 영향을 받는 유일한 방법은 opcache.jit_buffer_size를 지정했지만 opcache.jit을 지정하지 않은 경우입니다. 이 경우, JIT를 다시 활성화하려면 opcache.jit=tracing을 추가해야 합니다.

마지막으로, JIT는 특정 상황에서 더 빠르게 실행되고 더 적은 메모리를 사용하도록 개선되었습니다.

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 4개

좋은 정보 감사합니다.

감사합니다.

좋은 정보 감사요!

9개월 전

좋은 정보 감사합니다!!!

게시글 목록

번호 제목
2169
2168
2167
2158
2146
2140
2130
2114
2102
2095
2084
2075
2072
2070
2069
2065
2058
2056
2055
2054
2049
2038
2036
1989
1956
1923
1918
1904
1892
1891