PHP 8.1의 새로운 기능
PHP 8.1의 개발에 대한 최신 정보를 원하십니까? 내 뉴스레터를 구독하고 비정기적인 업데이트를 받으십시오.
새로운 기능
모든 릴리스와 마찬가지로 PHP 8.1에는 몇 가지 멋진 새 기능이 추가되었습니다. 이 목록은 매년 증가할 것임을 명심하십시오. 나는 또한 아직 구현되지 않았지만 언어로 끝날 좋은 기회를 만드는 기능을 나열하고 있습니다. 나는 항상 그 기능을 표시하도록 할 것입니다.
문자열 키로 배열 풀기
배열 풀기는 이미 에서 허용되었지만 숫자 키에서만 작동했습니다. 문자열 키가 이전에 지원되지 않았던 이유는 배열 중복을 병합하는 방법에 대한 합의가 없었기 때문입니다. RFC는
array_merge
의 의미를 따르면서 이를 깔끔하게 해결합니다.$array1 = ["a" => 1];
$array2 = ["b" => 2];
$array = ["a" => 0, ...$array1, ...$array2];
var_dump($array); // ["a" => 1, "b" => 2]
새로운 array_is_list 함수
아마도 한 번쯤 이 문제를 해결해야 했을 것입니다. 배열의 키가 인덱스 0부터 시작하여 숫자 순서인지 확인합니다. 마치
json_encode
가 배열을 배열로 인코딩할지 아니면 객체로 인코딩할지 결정하는 것과 같습니다.PHP 8.1은 배열이 이러한 의미 체계를 가진 목록인지 여부를 결정하는 내장 함수를 추가합니다.
$list = ["a", "b", "c"];
array_is_list($list); // true
$notAList = [1 => "a", 2 => "b", 3 => "c"];
array_is_list($notAList); // false
$alsoNotAList = ["a" => "a", "b" => "b", "c" => "c"];
array_is_list($alsoNotAList); // false
명시적 8진수 정수 리터럴 표기법
이제
0o
및 0O
를 사용하여 8진수를 나타낼 수 있습니다. 숫자 앞에 0
를 붙인 이전 표기법도 여전히 작동합니다.016 === 0o16; // true
016 === 0O16; // true
열거
이 RFC는 아직 논의 중입니다.
아직 투표가 없었지만 열거형을 추가하자는 이 제안은 열광적으로 받아들여졌습니다. 그들이 추가하는 가치에 대해 확신이 없으면 그에 대해 읽을 수 있습니다.
열거형을 추가하는 것은 PHP에서 상당한 개선이 될 것이므로 저는 이 RFC가 더 발전하는 것을 매우 기대하고 있습니다. 어떻게 생겼는지에 대한 빠른 미리보기를 제공하기 위해 다음은 코드 샘플입니다.
enum Status {
case Pending;
case Active;
case Archived;
}
그리고 이것이 그들이 사용되는 방법입니다:
class Post
{
public function __construct(
private Status $status = Status::Pending;
) {}
public function setStatus(Status $status): void
{
// …
}
}
$post->setStatus(Status::Active);
주요 변경 사항
PHP 8.1은 마이너 버전이지만 기술적으로 주요 변경 사항이 될 수 있는 몇 가지 변경 사항과 사용 중단이 있을 것입니다. 하나씩 논의해 보겠습니다.
$GLOBALS 사용 제한
$GLOBALS
사용 방법에 대한 약간의 변경은 모든 어레이 작업의 성능에 상당한 영향을 미칩니다. Nikita는 RFC에서 문제와 솔루션을 잘 설명하고 있습니다. 변경 사항은 일부 극단적인 경우가 $GLOBALS
로 더 이상 수행할 수 없음을 의미합니다. "더 이상 지원되지 않는 것은 전체적으로 $GLOBALS에 대한 쓰기입니다. 다음 모두는 컴파일 시간 오류를 생성합니다.":$GLOBALS = [];
$GLOBALS += [];
$GLOBALS =& $x;
$x =& $GLOBALS;
unset($GLOBALS);
게다가 참조로 전달
$GLOBALS
하면 런타임 오류가 생성됩니다.by_ref($GLOBALS); // Run-time error
Nikita는 packageist에서 상위 2000개의 패키지를 분석한 결과 이 변경 사항의 영향을 받는 23개의 케이스만 찾았습니다. 우리는 이것이 기술적으로 파괴적인 변화의 영향이 낮을 것이라는 결론을 내릴 수 있습니다. 이것이 내부가 PHP 8.1에 이를 추가하기로 결정한 이유입니다. 코드의 모든 부분에 긍정적인 성능 영향을 주는 이 변경으로 우리 대부분이 승리할 것임을 기억하십시오.
내부 함수의 null을 허용하지 않는 인수에 null 전달 사용 중단
이 변경은 간단합니다. 내부 함수는 현재 null을 허용하지 않는 인수에 대해 허용
null
하고 이 RFC는 해당 동작을 더 이상 사용하지 않습니다. 예를 들어 현재 다음과 같이 가능합니다.str_contains("string", null);
PHP 8.1에서 이러한 종류의 오류는 사용 중단 경고를 표시하고 PHP 9에서는 유형 오류로 변환됩니다.
지금은 여기까지입니다. 한 해 동안 이 게시물을 정기적으로 업데이트할 것이므로 루프에 유지하려면 subscribe을 확인하십시오. PHP 8.1을 종료했습니까? 에 알려주세요!
Reference
이 문제에 관하여(PHP 8.1의 새로운 기능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/brendt/what-s-new-in-php-8-1-2mg텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)