PHP 7까지는 위치 기반(positional) 매개변수 방식만 사용할 수 있었습니다. 즉, 첫 번째 인수는 반드시 첫 번째 매개변수에, 두 번째 인수는 두 번째 매개변수에 순서대로 할당해야 했으며, 누락된 인수가 있으면 PHP 7.x 버전에서는 해당 매개변수의 기본값이 자동으로 사용되었습니다.
반면 PHP 8부터는 매개변수의 위치가 아닌 이름을 기준으로 함수에 인수를 전달하는 명명된 인수(Named Arguments) 기능이 도입되었습니다. 이 방식은 다음과 같은 장점을 제공합니다.
- 인수 전달 순서가 더 이상 중요하지 않습니다.
- 기본값이 설정된 매개변수는 임의로 건너뛰고 필요한 값만 전달할 수 있습니다.
- 인수 이름이 곧 설명이 되므로 코드가 스스로 문서화(self-documenting)되어 가독성이 크게 향상됩니다.
예제: PHP 8의 명명된 인수
아래 예제처럼 매개변수명: 값 형태로 인수를 작성하면 순서를 바꿔 호출하더라도 정확한 매개변수에 값이 전달됩니다.
<?php
function sample($num = 1, $value = 5){
echo "Number: ", $num;
echo " ";
echo "Value: ", $value;
}
sample(value: 5, num: 30); // 순서를 바꿔 명명된 인수로 호출
?>
실행 결과
Number: 30 Value: 5
PHP 엔진은 함수 호출 시 인수의 이름과 함수 정의에 선언된 매개변수 이름을 서로 비교하여 일치시킵니다. 그렇기 때문에 위 예제처럼 호출 순서가 뒤바뀌어도 각 값이 올바른 매개변수에 전달되며, 코드는 오류 없이 정상적으로 실행됩니다.
핵심 포인트 정리
- PHP 8에서 인수는 순서에 독립적이며 자체적으로 문서화됩니다.
- 선택적(optional) 매개변수는 생략하고, 필요한 매개변수만 골라 지정할 수 있습니다.
- 특히 기본값이 많은 함수나 생성자에서 불필요한 인수를 모두 작성하지 않아도 되어 유지보수성이 좋아집니다.