현재 위치: > 최신 기사 목록> PHP8 Union 유형 : 다형성 기능 파라미터 처리를 최적화합니다

PHP8 Union 유형 : 다형성 기능 파라미터 처리를 최적화합니다

M66 2025-07-01

PHP8 Union 유형 : 다형성 기능 파라미터 처리를 최적화합니다

PHP8 이전에는 다형성 기능 파라미터를 처리하는 것이 비교적 복잡한 문제였습니다. PHP는 동적으로 입력 한 언어이므로 함수 매개 변수는 모든 유형의 값을 허용 할 수 있습니다. 이는 함수의 매개 변수 유형이 일관성이 없어 함수 내부에서 수행 해야하는 많은 유형 확인 및 변환 작업이 발생하여 코드를 장악하고 유지 관리하기가 어렵다는 것을 의미합니다.

그러나 Union 유형의 개념은 PHP8에 도입되었으며, 이는 다형성 기능 매개 변수를 처리 할 수있는 더 나은 방법을 제공합니다. Union 유형을 사용하면 매개 변수가 여러 가지 다른 유형의 값을 수용 할 수 있으므로 함수 내의 여러 유형의 판단을 피할 수 있습니다.

다음은이 개념을 설명하기위한 특정 코드 예입니다.

우리가 다른 모양의 영역을 계산하는 데 사용되는 기능 칼카리아가 있다고 가정 해 봅시다. PHP8 전에 다음 코드를 작성할 수 있습니다.

 
function calcArea($shape, $params) {
    switch ($shape) {
        case 'rectangle':
            $width = $params['width'];
            $height = $params['height'];
            return $width * $height;
        case 'circle':
            $radius = $params['radius'];
            return 3.14 * $radius * $radius;
        case 'triangle':
            $base = $params['base'];
            $height = $params['height'];
            return 0.5 * $base * $height;
    }
}

이 예에서는 다른 모양 매개 변수를 전달하여 영역을 계산합니다. 그러나 함수의 매개 변수 유형은 동적이므로 함수 내부의 스위치 문을 사용하여 모양 매개 변수에 따라 다른 계산을 수행해야합니다.

PHP8에서는 Union 유형을 사용 하여이 코드를 개선 할 수 있습니다. 우리는 $ shape 매개 변수의 유형이 '사각형'| 'circle'| 'triangle'임을 지정하고 $ params 매개 변수의 유형을 연관 배열로 정의 할 수 있습니다. 이러한 방식으로 기능 내부의 스위치 문을 생략하고 매개 변수의 메소드 및 속성을 직접 사용할 수 있습니다.

 
function calcArea(string $shape, array $params) {
    if ($shape === 'rectangle') {
        $width = $params['width'];
        $height = $params['height'];
        return $width * $height;
    } elseif ($shape === 'circle') {
        $radius = $params['radius'];
        return 3.14 * $radius * $radius;
    } elseif ($shape === 'triangle') {
        $base = $params['base'];
        $height = $params['height'];
        return 0.5 * $base * $height;
    }
}

이 새로운 구현에서는 추가 유형 확인 및 변환 작업을 수행하지 않고 기능 내부의 매개 변수와 메소드에 액세스하기 위해 기능의 매개 변수 목록에 유형 주석을 추가하면됩니다. 이것은 코드를 더 간결하고 이해하기 쉽게 만듭니다.

요약하면, PHP8의 Union 유형은 다형성 기능 매개 변수를 처리 할 수있는 더 나은 방법을 제공합니다. 함수 매개 변수 목록에서 여러 유형을 지정하면 기능 내에서 매개 변수의 속성 및 메소드에 직접 액세스하여 번거로운 유형 검사 및 변환 작업을 피할 수 있습니다. 이를 통해 코드를보다 간결하고 읽기 쉽고 코드의 복잡성을 효과적으로 줄일 수 있습니다.