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
2
댓글 3개
좋은 정보 감사합니다.
감사합니다.
좋은 정보 감사요!