0Pricing
PHP Academy · 강의

Match 표현식 및 명명된 인수

장황한 switch를 match로 바꾸고 명확성을 위해 명명된 인수를 사용합니다.

Match 표현식 및 명명된 인수은(는) CoddyKit의 무료 PHP Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 PHP Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. PHP Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

match 표현식

PHP 8.0에는 match가 도입되었습니다. 이는 switch를 간결하게 대체하며, 엄격한 동등 비교(===)를 사용하고 값을 반환합니다.

match와 switch 비교

주요 차이점은 다음과 같습니다. match는 엄격한 비교를 사용하고, 다음 분기로 넘어가지 않으며, 값을 반환하는 표현식입니다.

<?php
$status = 2;
$label = match($status) {
    1 => "active",
    2 => "inactive",
    3 => "banned",
    default => "unknown",
};
echo $label; // "inactive"

분기 하나에 여러 조건 사용하기

여러 match 값을 쉼표로 구분하면 같은 결과로 처리할 수 있습니다.

<?php
$code = 404;
$type = match($code) {
    200, 201, 202 => "success",
    400, 422      => "client error",
    404           => "not found",
    500, 503      => "server error",
    default       => "other",
};
echo $type; // "not found"

일치하는 항목이 없으면 match가 예외를 발생시킵니다

일치하는 분기가 없고 default도 없으면 PHP는 UnhandledMatchError를 발생시킵니다. 일치하는 항목이 없어도 조용히 계속 진행하는 switch와는 다릅니다.

표현식으로 사용하는 match

match는 값을 반환하므로 함수 인수, return 문 또는 문자열 보간 내부에서 인라인으로 사용할 수 있습니다.

<?php
echo "Status: ".match($active) {
    true  => "ON",
    false => "OFF",
};

명명된 인수

PHP 8.0의 명명된 인수를 사용하면 매개변수 이름으로 함수에 인수를 전달할 수 있으며, 순서도 자유롭게 지정할 수 있습니다.

<?php
function makeTag(string $tag, string $content, string $class = ""): string {
    return "<$tag class=\"$class\">$content</$tag>";
}
echo makeTag(content: "Hello", tag: "p", class: "lead");

명명된 인수의 장점

명명된 인수는 매개변수가 많은 함수의 가독성을 높이고, 선택적 매개변수를 건너뛸 수 있게 하며, 각 값이 무엇을 의미하는지 명확하게 보여 줍니다.

내장 함수에서 명명된 인수 사용하기

명명된 인수는 PHP 내장 함수에서도 사용할 수 있습니다.

<?php
$arr = [3, 1, 4, 1, 5];
$result = array_slice(array: $arr, offset: 1, length: 3, preserve_keys: true);

명명된 인수와 위치 인수 함께 사용하기

위치 인수와 명명된 인수를 함께 사용할 수 있지만, 명명된 인수는 위치 인수 뒤에 와야 합니다.

<?php
str_contains(haystack: "Hello World", needle: "World");
// or positional then named:
str_contains("Hello World", needle: "World");

array_map에서 명명된 인수 사용하기

명명된 인수는 매개변수 순서가 혼란스러운 가변 인수 내장 함수에서 특히 유용합니다.

실제 코드에서 match 사용하기

HTTP 메서드 라우팅, 상태 코드 매핑 및 열거형과 유사한 분기를 구현할 때 긴 if/elseif 연결을 match로 바꾸세요.

<?php
$handler = match($_SERVER["REQUEST_METHOD"]) {
    "GET"    => new GetHandler(),
    "POST"   => new PostHandler(),
    "DELETE" => new DeleteHandler(),
    default  => throw new InvalidArgumentException("Unsupported method"),
};

요약

match는 엄격하고 모든 경우를 처리하며 다음 분기로 넘어가지 않는 분기를 제공합니다. 명명된 인수는 호출 위치의 가독성을 높입니다. 두 기능 모두 PHP 8.0의 주요 개선 사항입니다.

빠른 확인

일치하는 match 분기가 없고 default도 없으면 어떻게 되나요?

자주 묻는 질문

“Match 표현식 및 명명된 인수” 강의는 무료인가요?

네 — “Match 표현식 및 명명된 인수” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 PHP Academy 강의 전체를 잠금 해제할 수 있습니다. PHP Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“Match 표현식 및 명명된 인수”에서 뭘 배우나요?

장황한 switch를 match로 바꾸고 명확성을 위해 명명된 인수를 사용합니다. 브라우저에서 직접 실행하는 실습 코드로 PHP Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

PHP Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 PHP Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“Match 표현식 및 명명된 인수” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 PHP Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 PHP Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Match 표현식 및 명명된 인수
  2. Nullsafe 연산자 및 유니언 형식
  3. 열거형(Enum)
  4. Fiber: 협력적 동시성
← PHP Academy(으)로 돌아가기