PHP 8.4의 새로운 기능 > 영카트5 팁자료실

영카트5 팁자료실

PHP 8.4의 새로운 기능 정보

PHP 8.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는 특정 상황에서 더 빠르게 실행되고 더 적은 메모리를 사용하도록 개선되었습니다.

추천
1

댓글 0개

전체 401
영카트5 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT