기본 매개변수와 가변 매개변수
PHP 함수에서 기본값과 가변 인수를 사용합니다.
기본 매개변수와 가변 매개변수은(는) CoddyKit의 무료 PHP Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 PHP Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. PHP Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
기본 매개변수 값
기본값을 사용하면 호출자가 인수를 생략할 수 있습니다. 인수가 전달되지 않으면 기본값이 사용됩니다:
<?php
function createUser(string $name, string $role = 'viewer'): string {
return "$name ($role)";
}
echo createUser('Alice'); // Alice (viewer)
echo createUser('Bob', 'admin'); // Bob (admin)기본값 규칙
기본 매개변수에 적용되는 중요한 규칙입니다:
- 기본값이 있는 매개변수는 필수 매개변수 뒤에 와야 합니다
- 기본값은 상수 표현식이어야 합니다 — 함수 호출이나 변수는 사용할 수 없습니다
- PHP 8의 이름 있는 인수는 매개변수 순서에 대한 요구 사항을 완화합니다
NULL 허용 매개변수
?type을 사용하면 NULL을 유효한 인수로 허용하고 NULL을 기본값으로 지정할 수 있습니다:
<?php
function findUser(?int $id = null): string {
if ($id === null) {
return 'Searching all users';
}
return "User #$id";
}
echo findUser(); // Searching all users
echo findUser(42); // User #42...를 사용하는 가변 인수 함수
매개변수 앞에 ...을 사용하면 배열로 가변 개수의 인수를 받을 수 있습니다:
<?php
function sum(int ...$numbers): int {
return array_sum($numbers);
}
echo sum(1, 2, 3); // 6
echo sum(10, 20, 30, 40); // 100필수 매개변수와 가변 인수
필수 매개변수와 마지막의 가변 인수를 함께 사용할 수 있습니다:
<?php
function logMessage(string $level, string ...$messages): void {
foreach ($messages as $msg) {
echo "[$level] $msg" . PHP_EOL;
}
}
logMessage('INFO', 'App started', 'Config loaded');호출 시 펼침 연산자
함수를 호출할 때 ...을 사용하면 배열을 개별 인수로 펼칠 수 있습니다:
<?php
function add3(int $a, int $b, int $c): int {
return $a + $b + $c;
}
$args = [1, 2, 3];
echo add3(...$args); // 6
$extra = [4, 5];
echo add3(1, ...$extra); // 10이름 있는 인수 (PHP 8)
이름 있는 인수를 사용하면 순서와 관계없이 매개변수 이름으로 값을 전달할 수 있습니다:
<?php
function createTag(string $tag, string $content, string $class = ''): string {
$cls = $class ? " class=\"$class\"" : '';
return "<$tag$cls>$content</$tag>";
}
// Skip $class, pass $content by name
echo createTag(content: 'Hello', tag: 'p');
// <p>Hello</p>내장 함수와 이름 있는 인수
PHP 내장 함수에서도 이름 있는 인수를 사용할 수 있습니다:
<?php
$arr = [3, 1, 4, 1, 5];
// Traditional positional
$result1 = array_slice($arr, 1, 3);
// Named arguments
$result2 = array_slice(array: $arr, offset: 1, length: 3);
print_r($result1); // [1, 4, 1]func_get_args() 이전 방식
PHP 5.6에서 가변 인수 문법이 도입되기 전에는 모든 인수에 접근할 때 func_get_args()를 사용했습니다. 이전 방식의 코드에서 이 함수를 볼 수 있습니다:
<?php
function legacySum(): int {
$args = func_get_args();
return array_sum($args);
}
echo legacySum(1, 2, 3, 4); // 10
// Modern: use int ...$numbers instead형식 지정 가변 인수
엄격한 입력을 위해 형식 힌트와 가변 인수 매개변수를 결합합니다:
<?php
declare(strict_types=1);
function joinStrings(string $sep, string ...$parts): string {
return implode($sep, $parts);
}
echo joinStrings('-', 'a', 'b', 'c'); // a-b-c
// joinStrings('-', 'a', 42); // TypeError in strict mode기본값과 이름 있는 인수 결합
이름 있는 인수와 기본값을 함께 사용하면 최대한 유연하게 작성할 수 있습니다:
<?php
function sendEmail(
string $to,
string $subject,
string $body = '',
bool $html = false
): bool {
// simulate send
return true;
}
// Skip $body, pass $html by name
sendEmail('a@b.com', 'Hi', html: true);빠른 확인
PHP 함수 정의에서 ... 연산자는 어떤 역할을 합니까?
복습: 기본값 및 가변 인수 매개변수
요약:
- 기본값을 사용하면 선택적 매개변수를 만들 수 있습니다
- 기본값이 있는 매개변수는 필수 매개변수 뒤에 와야 합니다
?type을 사용하면 선택적 기본값과 함께 NULL을 허용할 수 있습니다...$args는 가변 인수를 배열로 수집합니다- 펼침 연산자
...$arr는 호출 위치에서 배열을 확장합니다 - 이름 있는 인수 (PHP 8)는 위치가 아니라 이름으로 전달합니다
자주 묻는 질문
“기본 매개변수와 가변 매개변수” 강의는 무료인가요?
네 — “기본 매개변수와 가변 매개변수” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 PHP Academy 강의 전체를 잠금 해제할 수 있습니다. PHP Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“기본 매개변수와 가변 매개변수”에서 뭘 배우나요?
PHP 함수에서 기본값과 가변 인수를 사용합니다. 브라우저에서 직접 실행하는 실습 코드로 PHP Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
PHP Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 PHP Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“기본 매개변수와 가변 매개변수” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 PHP Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 PHP Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 함수 정의와 호출
- 기본 매개변수와 가변 매개변수
- 변수 범위: 지역과 전역
- 익명 함수와 클로저