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

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!

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

추천
2

댓글 3개

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

회원로그인

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