2023년 11월부터 PHP 8.3이 웹 개발 프로그래밍 언어의 최신 버전이 됩니다. 유니온 유형, 읽기 전용 속성, 개선된 오류 메시지 등 프로그래머를 위한 다양한 개선 사항이 포함되어 있으므로 이를 활용하려면 반드시 업그레이드해야 합니다.
PHP의 새로운 기능을 살펴보고 실제 예제를 사용하여 구현하는 방법을 몇 가지 단계로 설명합니다.
유니온 타입과 교집합 타입
PHP 8.3에서 주목할 만한 업그레이드에는 교집합 타입과 유니온 타입 구현이 포함됩니다. 이러한 유형을 사용하면 코더가 매개변수와 반환 유형을 다양한 종류의 혼합으로 지정할 수 있으므로 코드의 다양성과 내구성이 향상됩니다.
파이프 기호(|)를 사용하여 유니온 유형을 사용하면 매개변수 또는 반환값을 여러 유형으로 지정할 수 있습니다. 예를 들어 문자열 또는 정수 입력을 받을 수 있는 함수가 있다고 가정하면 다음과 같은 방식으로 매개변수를 정의할 수 있습니다.
function foo(int|string $param) { // ... }
반면 교집합 유형을 사용하면 반환값 또는 매개변수를 두 개 이상의 유형 조합으로 정의할 수 있습니다. 따라서 반환값 또는 매개변수는 교집합의 모든 유형을 충족해야 합니다.
function bar(ArrayAccess&Countable $param): int { // ... }
이 예제에서 인수는 ArrayAccess 및 Countable 인터페이스를 모두 구현하는 객체이어야 하며 함수는 정수를 반환해야 합니다.
유니온 유형은 파이프 기호(|)로 정의되며 매개변수 또는 반환값이 가질 수 있는 여러 유형을 지정할 수 있습니다.
반면 교차 유형을 사용하면 매개변수 또는 반환값을 두 개 이상의 유형의 교차로 정의할 수 있습니다. 즉, 매개변수 또는 반환값은 모든 유형의 교집합을 만족해야 합니다.
읽기 전용 속성
PHP 8.3에 추가된 읽기 전용 속성은 또 다른 유용한 측면입니다. 이 속성을 사용하여 속성을 읽기 전용으로 선언하면 값에 대한 추가 변경을 방지하고 초기화를 한 번만 허용할 수 있습니다.
이 기능을 사용하면 중요한 데이터의 의도치 않은 변경을 방지하여 코드의 보안과 신뢰성을 높일 수 있습니다.
이 PHP 8.3 예제는 읽기 전용 속성을 정의하는 방법을 보여줍니다.
Class MyClass
{
Public read_only string $name;
Public function__construct(string $title)
{$this->title = $title;
}
}
위에서 언급한 예제에서 함수 Object() { [네이티브 코드] }는 $name 프로퍼티를 한 번만 초기화합니다. 이 함수는 읽기 전용 함수로만 지정할 수 있습니다.
향상된 오류 메시지
PHP 스크립트에서 치명적인 오류가 발생하면 PHP 8.3의 향상된 오류 메시지 속성은 보다 심층적이고 유용한 오류 메시지를 제공합니다. 개발자는 이 기능을 통해 코드 문제를 빠르게 식별하고 해결할 수 있습니다.
정의되지 않은 배열 인덱스에 액세스할 때 향상된 오류 메시지가 작동합니다. 이전 PHP 릴리스에서는 이와 같은 오류 메시지가 표시되었습니다:
Notice: Undefined offset: 4 in /path/to/file.php on line 3
이 오류 메시지는 문제가 어디서 발생했는지에 대해 자세히 설명하지 않습니다. 하지만 PHP 8.3의 향상된 오류 메시지를 사용하면 다음과 같이 더 자세한 오류 메시지가 표시됩니다:
Fatal error: Uncaught Error: Cannot use string offset as an array in /path/to/file.php:3 Stack trace: #0 {main} thrown in /path/to/file.php on line 3 Notice: Trying to access array offset on the value of type null in /path/to/file.php on line 3
이 오류 메시지는 문제의 원인을 파악하는 데 도움이 되는 스택 추적을 제공하며 문자열 오프셋을 배열로 사용하려고 시도하고 있음을 알려줍니다(PHP의 여러 유용한 텍스트 조작 함수 중 하나). 또한 배열 오프셋에서 널 값에 액세스하려고 시도하고 있음을 알려줍니다.
PHP 8.3 준비하기
PHP 8.3으로 업그레이드하는 것은 가장 최근의 주요 기능과 개선 사항을 고려할 때 개발자에게 매우 중요한 일입니다. PHP 8.3에 유니온 및 교차 유형이 도입되어 프로그래머가 복잡한 데이터 유형을 더 쉽게 처리할 수 있습니다.
읽기 전용 속성은 중요한 데이터에 대한 의도치 않은 변경을 방지하여 코드 안정성을 높여줍니다. 일반적으로 PHP 8.3으로 업그레이드하면 개발자는 더욱 강력하고 적응력이 뛰어난 도구에 액세스하여 Laravel과 같은 프레임워크로 고성능 웹 애플리케이션을 만들 수 있습니다.